De meest elegante manier zou zijn om de te gebruiken USING
clausule in een expliciete join-voorwaarde:
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;
Op deze manier wordt de kolom houseid
komt slechts eenmaal voor in het resultaat , zelfs als u SELECT *
. gebruikt .
Om de gemiddelde epatmpg
te krijgen voor de geselecteerde rijen:
SELECT avg(v.epatmpg) AS avg_epatmpg
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
Als er meerdere overeenkomsten zijn in dayv2pub
, kan de afgeleide tabel meerdere instanties van elke rij in vehv2pub
bevatten na de toetreding. avg()
is gebaseerd op de afgeleide tabel.