我想做的是在一个有两个不同值的表中搜索,这很难解释,所以我只举一个例子。
表:人
+----------------+
| id name |
|----------------|
| 1 Bob |
| 2 Jack |
| 3 Waly |
| 4 Alex |
++++++++++++++++++
表:动物
+------------------------------------------+
| id person key value |
|------------------------------------------|
| 1 1 dog Terrier |
| 2 1 dog Shepherd |
| 3 1 bird African Grey |
| 4 3 cat Toyger |
| 5 3 cat Korat |
| 6 2 dog Terrier |
++++++++++++++++++++++++++++++++++++++++++++
例如:
我只想选择那些有一只狗,一只猎犬和一只非洲鸟的人,所以它应该返回1(bob)。我需要能够添加和删除参数,我可能只希望拥有一只猎犬的人返回1(bob)和2(jack)。
我已经尝试过基本的SQL,但是已经使它工作了,因为当您限制键的时候,您可以搜索另一个。下面的查询是我尝试过的,我想返回的内容:1(bob)。
SELECT p.id, p.name
FROM people p, animals a
WHERE p.id = a.person
AND (a.key = 'dog' AND a.value LIKE '%Terrier%' )
AND (a.key = 'bird' AND a.value LIKE '%African%' )
如果可能的话,我想把所有的动物排在同一张桌子上,这样我就不必把它们分开。谢谢你的帮助!