mysql - 对于具有单表继承的多个类的多通连接,正确的 SQL 语句是什么

标签 mysql sql single-table-inheritance

我有两个表,地点和用户

-- 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/

相关文章:

php - Ajax和Mysql一键插入2同一行

php - 合并两个从两个不同表返回值的 SQL SELECT 语句

ruby-on-rails - Rails:未初始化的常量 PostsController::TextPost

java - 单表继承及关系

mysql "LINES STARTING BY"具有属性的节点

mysql - 无法在简单代码上添加外键约束请帮忙

sql - nvarchar 不是可识别的游标选项

php - 如何在 Doctrine 2 中管理单表继承?

mysql - 哪一个运行起来更安全/更好?

sql - 使用事务隔离级别锁定 SQL Server 中的数据