Il modo più elegante sarebbe usare USING
clausola in una condizione di join esplicita:
SELECT houseid, v.vehid, v.epatmpg, d.houseid, d.trpmiles
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
In questo modo, la colonna houseid è nel risultato solo una volta , anche se utilizzi SELECT * .
Per ottenere il epatmpg medio per le righe selezionate:
SELECT avg(v.epatmpg) AS avg_epatmpg
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
Se sono presenti più corrispondenze in dayv2pub , la tabella derivata può contenere più istanze di ogni riga in vehv2pub dopo l'unione. avg() si basa sulla tabella derivata.