Postgresql-如果没有满足多对多关系中的条件,则选择此选项
我有这些桌子。通过“Item_ads”表(多对多),每个项目组都有许多项目 项目组(Id) 项目(id|状态) 项目广告(id |项目组|项目id |项目id) 我想获取所有项目组,其中没有一个项目的状态为“成功”。如果只有一个我不必选择它,那么没有人必须是“成功”的 我试过了,但没用Postgresql-如果没有满足多对多关系中的条件,则选择此选项,postgresql,Postgresql,我有这些桌子。通过“Item_ads”表(多对多),每个项目组都有许多项目 项目组(Id) 项目(id|状态) 项目广告(id |项目组|项目id |项目id) 我想获取所有项目组,其中没有一个项目的状态为“成功”。如果只有一个我不必选择它,那么没有人必须是“成功”的 我试过了,但没用 SELECT item_groups.id FROM item_groups INNER JOIN item_ads ON item_ads.item_group_id = item_groups.i
SELECT
item_groups.id
FROM item_groups
INNER JOIN item_ads ON item_ads.item_group_id = item_groups.id
INNER JOIN items ON items.id = item_ads.item_id
WHERE NOT EXISTS (
SELECT 1 FROM items WHERE items.crawling_status = 'success'
)
您的WHERE条件适用于所有数据库。这意味着,若数据库中只存在一个成功项,则该值为真(不存在)。必须指定要在条件中检查的项目类型。在这种情况下,您希望项目属于某个项目组。你可以这样做:
SELECT
item_groups.id
FROM item_groups
INNER JOIN item_ads ON item_ads.item_group_id = item_groups.id
INNER JOIN items ON items.id = item_ads.item_id
WHERE NOT EXISTS (
SELECT 1 FROM items WHERE item.status = 'success'
AND item_ads.item_id = items.id
)
如果希望只获取每个项目组.id
一次,还可以按项目组.id添加组
我也不明白你的意思
如果只有一个我不必选择它,那么没有人必须是“成功”的