Postgresql Postgres来自两类产品的意外结果

Postgresql Postgres来自两类产品的意外结果,postgresql,Postgresql,我已经创建了3个表:item、item_category和category,当我选择具有两个特定类别的项目时,它返回0行,即使我有具有这些类别的项目 有人知道为什么会这样吗 例如,我使用的“无选择”过滤器是: SELECT i.item_id, c.cate_friendly_id FROM item i , item_category ic, category c WHERE i.item_id = ic.item_id AND ic.cate_id = c.cate_id 返回行 1;

我已经创建了3个表:item、item_category和category,当我选择具有两个特定类别的项目时,它返回0行,即使我有具有这些类别的项目

有人知道为什么会这样吗

例如,我使用的“无选择”过滤器是:

SELECT i.item_id, c.cate_friendly_id
FROM item i , item_category ic, category c
WHERE
i.item_id = ic.item_id 
AND ic.cate_id = c.cate_id 
返回行

1;"aaaa"
1;"7777"
1;"bbbb"
2;"aaaa"
2;"1111"
2;"cccc"
当我选择cate_friendly_id=7777的项目时,它也会返回正确的行,例如:

SELECT i.item_id, c.cate_friendly_id
FROM item i , item_category ic, category c
WHERE
i.item_id = ic.item_id 
AND ic.cate_id = c.cate_id 
AND ( 
    c.cate_friendly_id = '7777' 
)
SELECT i.item_id, c.cate_friendly_id
FROM item i , item_category ic, category c
WHERE
i.item_id = ic.item_id 
AND ic.cate_id = c.cate_id 
AND ( 
    c.cate_friendly_id = 'aaaa' 
    AND c.cate_friendly_id = '7777' 
)
返回1行,即:

1;"7777"
如果我按类别aaaa筛选,则返回2行

1;"aaaa"
2;"aaaa"
这也很好,但当我选择cate_friendly_id=aaaa和7777的项目时,找不到任何行,例如:

SELECT i.item_id, c.cate_friendly_id
FROM item i , item_category ic, category c
WHERE
i.item_id = ic.item_id 
AND ic.cate_id = c.cate_id 
AND ( 
    c.cate_friendly_id = '7777' 
)
SELECT i.item_id, c.cate_friendly_id
FROM item i , item_category ic, category c
WHERE
i.item_id = ic.item_id 
AND ic.cate_id = c.cate_id 
AND ( 
    c.cate_friendly_id = 'aaaa' 
    AND c.cate_friendly_id = '7777' 
)
难道它不应该把物品1还给我,因为它有aaaa和7777两个类别


谢谢你的帮助

这是预期的答案,因为任何单个类别行都是“aaaa”或“7777”,但不是两者都是

您需要查询两行的项,一行表示“aaaa”,另一行表示“7777”,如