La manière la plus élégante serait d'utiliser le USING
clause dans une condition de jointure explicite :
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;
Ainsi, la colonne houseid
n'est dans le résultat qu'une fois , même si vous utilisez SELECT *
.
Pour obtenir le epatmpg
moyen pour les lignes sélectionnées :
SELECT avg(v.epatmpg) AS avg_epatmpg
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
S'il y a plusieurs correspondances dans dayv2pub
, la table dérivée peut contenir plusieurs instances de chaque ligne dans vehv2pub
après la jointure. avg()
est basé sur la table dérivée.