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.