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.