我需要选择子A匹配条件1且子B匹配条件2等所有父行
这些表是一对多设置的,其中父表的主键在另一个表的子行的列中引用。
Parent Table `Pets`
ID | Name
---|-------
1 | Puppy
2 | Cat
3 | Fish
Child Table `PetsProperties`
PetsID | Property
----------|-------
1 | Furry
1 | Pet
2 | Furry
2 | Pet
3 | Pet
3 | Scaly
鉴于上述表格,如果条件1为Property ='Furry'且条件2为Property ='Pet',则查询将返回:
1 | Puppy
2 | Cat
但不是
3 | Fish
Fabien Werniez提供的查询工作得很漂亮,当应用于此测试用例时:
SELECT A.* FROM Pets A
INNER JOIN PetsProperties B ON B.PetsID = A.ID AND B.Property= 'Furry'
INNER JOIN PetsProperties C ON C.PetsID = A.ID AND C.Property= 'Pet'
答案 0 :(得分:0)
2 INNER JOIN中添加了ON子句的条件应该这样做:
SELECT A.* FROM A
INNER JOIN B ON B.id = A.b_id AND B.whatever = condition1
INNER JOIN C ON C.id = A.c_id AND C.whatever = condition2