我有两个表,地点和用户
-- Places Table: --
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| type | varchar(15) | NO | | NULL | |
| parent_id | int(11) | YES | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
-- Users Table: --
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| city_id | int(11) | YES | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
我有三个模型,它们都使用 Places 表,并且都是 Places 表的子类 放置模型。 place.type 列保存子类的类名,因此 我知道它属于哪个型号。
国家、州、城市。
所以,继承结构如下:
国家<地点 州 < 地点 城市<地点
关系如下:
国家有很多州 该州有许多城市 城市有很多用户
我想通过加入州和城市来返回给定国家/地区内的所有用户,但我无法让 SQL 查询为其工作。
有哪位 SQL 专家可以为我指明正确的方向吗?
最佳答案
这个怎么样?您需要国家/地区的 ID。
SELECT st.name,
city.name,
u.name
FROM users u,
places city,
places st
WHERE u.city_id = city.id
AND city.type = 'city'
AND st.type = 'state'
AND st.id = city.parent_id
AND st.parent_id = @country_id
关于mysql - 对于具有单表继承的多个类的多通连接,正确的 SQL 语句是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352698/