选择子a为1且子b为2的父行(mysql)

时间:2014-02-26 19:13:02

标签: mysql one-to-many

我需要选择子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'

1 个答案:

答案 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