>我有两个表,"位置"和"用户"
-- 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.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