我想找到一个不参加活动的团体。
有我的桌子:
groupe:
+-----------+-------------+-----------+-------------+
| id_groupe | id_createur | name | description |
+-----------+-------------+-----------+-------------+
| 1 | 5 | tagada | epic |
+-----------+-------------+-------------------------+
| 2 | 1 | banana | good |
+-----------+-------------+-----------+-------------+
| 3 | 1 | blueberry | legendary |
+-----------+-------------+-----------+-------------+
| 4 | 2 | coco | great |
+-----------+-------------+-----------+-------------+
第1组是由成员5创建的,名字是'tagada',描述是'epic'。
事件:
+-----+-------------+----------------+
| id | name | description |
+-----+-------------+----------------+
| 1 | lunch |for lunch monday|
+-----+-------------+----------------+
| 2 | game | play videogame |
+-----+-------------+----------------+
事件1的名称为“午餐”,而他的描述为“周一午餐”。
groupe_events:
+--------------+--------------+
| id_groupe_ge | id_events_ge |
+--------------+--------------+
| 1 | 2 |
+--------------+--------------+
| 2 | 2 |
+--------------+--------------+
| 3 | 2 |
+--------------+--------------+
| 1 | 1 |
+--------------+--------------+
| 3 | 1 |
+--------------+--------------+
例如,第1,第2和第3组将参加事件2,第1和第4组将参加事件1
如果我使用LEFT JOIN,则无法指定事件的ID(id_groupe_ge)
Mysql
SELECT *
FROM groupe
LEFT JOIN groupe_events ON id_groupe_ge = id_groupe
WHERE id_groupe_ge IS NULL
或 mysql
SELECT *
FROM groupe
LEFT JOIN groupe_events ON id_groupe_ge = id_groupe
WHERE id_events_ge IS NULL OR id_events_ge <> 2
通过这种方法,我还拥有id_events_ge 1的行
如果我使用classique JOIN和WHERE,则有参加的小组,而恰恰相反
Mysql
SELECT *
FROM groupe
JOIN groupe_events ON id_groupe_ge = id_groupe
WHERE id_events_ge = 2
例如,如何找到未参加活动2的小组? 这一个:
+-----------+-------------+-----------+-------------+
| 4 | 2 | coco | great |
+-----------+-------------+-----------+-------------+
其他示例,例如,我想查找不参加活动1的组? 这一个:
+-----------+-------------+-----------+-------------+
| 2 | 1 | banana | good |
+-----------+-------------+-----------+-------------+
| 4 | 2 | coco | great |
+-----------+-------------+-----------+-------------+
答案 0 :(得分:0)
请先回答您的问题:
我想找到一个不参加活动的团体...
我将进行外部联接,如:
select g.*
from groupe g
left join groupe_events ge on ge.id_group_ge = g.id_groupe
where ge.id_group_ge is null
答案 1 :(得分:0)
如果要根据组ID查找不参与的组,则:
select group.*
from groupe
left join groupe_events on groupe_events.id_group_ge = groupe.id_groupe
where groupe_events.id_group_ge is null and groupe_events.id_events_ge = 'put-your-id-here'
否则,请使用与@The Impaler回答的查询相同的查询
答案 2 :(得分:0)
要查找不参与特定 事件的组,您需要将该条件包括在JOIN
中,然后检查结果NULL
在groupe_events
表中。例如,要查找不参与事件1的组:
SELECT g.*
FROM groupe g
LEFT JOIN groupe_events ge ON ge.id_groupe_ge = g.id_groupe AND ge.id_events_ge = 1
WHERE ge.id_groupe_ge IS NULL
输出:
id_groupe id_createur name description
2 1 banana good
4 2 coco great
对于事件2:
SELECT g.*
FROM groupe g
LEFT JOIN groupe_events ge ON ge.id_groupe_ge = g.id_groupe AND ge.id_events_ge = 2
WHERE ge.id_groupe_ge IS NULL
输出:
id_groupe id_createur name description
4 2 coco great