假设我有两张桌子。如何运行这个MySQL JOIN查询?
第一张表是角色列表。用户可以有很多人物角色。
mysql> select id, user_id, name from personas_personas;
+----+---------+--------------+
| id | user_id | name |
+----+---------+--------------+
| 8 | 1 | startup |
| 9 | 1 | nerd |
| 10 | 1 | close |
| 12 | 2 | Nerd |
| 13 | 2 | Startup |
| 14 | 2 | Photographer |
+----+---------+--------------+
6 rows in set (0.00 sec)
现在,我有另一个名为“批准”的表。
mysql> select id, from_user_id, to_user_id, persona_id from friends_approvals;
+----+--------------+------------+------------+
| id | from_user_id | to_user_id | persona_id |
+----+--------------+------------+------------+
| 2 | 1 | 2 | 8 |
| 3 | 1 | 2 | 9 |
+----+--------------+------------+------------+
2 rows in set (0.00 sec)
如果from_user
要批准to_user
一个角色,然后记录被插入。
我试图做到这一点查询...
给定用户,找到它的所有角色。然后,对于每个角色,确定它是否被批准用于某个to_user
。如果是,请在结果集中返回is_approved
= 1。否则,在结果集中返回is_approved
= 0。
因此,这是我开始:
SELECT *
FROM personas_personas
WHERE user_id = 1
LEFT JOIN friends_approvals ON
...but i don't know where to go from here.
所以,最终的结果集应该在personas_personas
表中的所有列,然后也is_approved
每个结果。
仅供参考,你应该有一个用户,假面和UserPersona表(为了更好的标准化)。然后可能是一个拥有所有“批准”的UserPersonaUser表。 –
@BradChristie我有一个用户表和一个角色表。为什么我需要UserPersona表? – TIMEX
避免重复的人物角色。一旦角色“XYZ”是角色表,它不能被复制,只是简单地重新分配/使用。 UserPersonal将是一个多对多的关系。 (除非我错误地理解了这个方案 - 完全可能) –