Jointure SQL sur plusieurs colonnes dans les mêmes tables

136

J'ai 2 sous-requêtes, mais j'ai du mal à joindre les colonnes des mêmes tables. J'ai essayé:

SELECT * FROM

(SELECT userid, listid 
FROM user_views_table
WHERE date='2013-05-15' AND view_type='lists') a

JOIN

(SELECT sourceid, destinationid
FROM actions_table
WHERE date='2013-05-15' AND payloadtype='lists_user' AND actiontype='delete') b

ON a.userid = b.sourceid
ON a.listid = b.destinationid;

Si je termine simplement la requête avec ON a.userid = b.sourceidcela fonctionne, mais comment puis-je également joindre ces tables sur une autre colonne également ON a.listid = b.destinationid??

Toute aide appréciée.

user1899415
la source
2
merci pour les réponses .. argh n'avait tout simplement pas le ";" à la fin de la requête plus tôt
user1899415

Réponses:

201

Rejoignez comme ceci:

ON a.userid = b.sourceid AND a.listid = b.destinationid;
Zoran Horvat
la source
7
Cela semble évident avec le recul, mais je voulais noter qu'un OR fonctionne aussi, vous vous retrouvez avec BEAUCOUP de disques.
wastubbs
68

Vous voulez joindre à la condition 1 ET à la condition 2, utilisez simplement le mot-clé AND comme ci-dessous

ON a.userid = b.sourceid AND a.listid = b.destinationid;
Paul McLoughlin
la source