【发布时间】:2017-05-30 21:51:42
【问题描述】:
我有一个包含 3 个表记录、类别、关系的数据库。
records (id, lat, lng)
categories (c_id, c_value)
relational (r_id, c_id)
records
id | lat | lng
----------------------
1 23.57258 -35.28412
2 23.54855 -35.18881
3 23.74128 -35.17469
categories
c_id | c_value
---------------
100 groceries
101 bags
102 drinks
relational
id | c_id
------------
1 100
1 102
2 101
3 100
relational.r_id = records.id 和relational.c_id = categories.c_id 我想从具有不同 c_value 的记录中获取对,所以我想在记录中进行自我连接,并在类别和关系中进行内部连接。 我在没有自我加入记录的情况下做到了这一点
SELECT id, lat, lng, c_value
FROM records
JOIN relational
ON records.id = relational.id
JOIN categories
ON relational.c_id = categories.c_id
WHERE c_value = "V1"
我尝试了类似的方法,但没有成功。我的 R1.c_value 有问题。
SELECT R1._id, R1.lat, R1.lng, R1.c_value, R2._id, R2.lat, R2.lng,
R2.c_value
FROM records R1, records R2
JOIN relational
ON records.id = relational.id
JOIN categories
ON relational.c_id = categories.c_id
WHERE R1.c_value = "groceries" AND R2.c_value = "bags"
您知道如何将这 3 个联接结合起来,以便从记录中获取 2 行与其他表的条件吗? 我想要这样的输出: 对于“杂货”和“袋子”作为 c.value
1 | 23.57258 | -35.28412 | groceries | 2 | 23.54855 | -35.18881 | bags
【问题讨论】:
-
在同一个查询中混合使用“comma join”和“join”语法通常是个坏主意……使用“comma join”表示法通常是个坏主意。
-
我觉得这个问题很难理解。您能否提供一些示例数据以及您尝试获得的结果?
标签: mysql join inner-join self-join