Ciao! Per quanto riguarda la prima domanda per avere il risultato che indichi probabilmente nella query c'è anche un "GROUP BY T.Retribuzione", altrimenti verrebbe mostrata solamente una riga contenente una retribuzione ed il conteggio di tutte le righe (ovvero 10, perché stai facendo un prodotto cartesiano fra le 2 tabelle).
Una cosa che ti ho visto fare in tutte le domande che hai posto è la seguente:
SELECT *
FROM tabella1, tabella2
Una query di questo tipo è un prodotto cartesiano, ovvero prende
tutte le righe della tabella1 e le "mescola" con
tutte le righe della tabella 2. Ad esempio la query "SELECT *
FROM Aziende, (SELECT CF, Retribuzione FROM Consulenti) T" restituisce il seguente risultato:
|111|Parmalat|PNG|2000
|222|Zucchetti|PNG|2000
|111|Parmalat|RCR|4000
|222|Zucchetti|RCR|4000
|111|Parmalat|SLV|1000
|222|Zucchetti|SLV|1000
|111|Parmalat|SPG|1000
|222|Zucchetti|SPG|1000
|111|Parmalat|VVC|2000
|222|Zucchetti|VVC|2000
Una cosa che, probabilmente, avrebbe più senso sarebbe fare un JOIN, ovvero prendere le sole righe che condividono gli stessi valori su un campo. Ad esempio la query "SELECT *
FROM Aziende JOIN Consulenti ON Aziende.PIVA = Consulenti.PIVA" restituisce:
|111|Parmalat|111|PNG|2012-04-12|2000
|111|Parmalat|111|SLV|2013-01-11|1000
|111|Parmalat|111|SPG|2012-05-15|1000
|222|Zucchetti|222|RCR|2012-02-18|4000
|222|Zucchetti|222|VVC|2011-06-14|2000