简而言之,我已经提供了数据,以及目前的结果,请告诉我怎么做才能完成最后一步。请使用SQLite。
==书面解释==
我想使用表B连接来自表A的值,但随后显示来自表A的所有结果,甚至是那些在表B中没有值的结果。我尝试了一大堆变体,但我确实遇到了困难。
表:
*user_tables*
_id table_name table_version table_status
---------- ---------- ------------- ------------
1 addresses 1 1
2 jobs 1 1
3 people 1 1
4 phones 1 1*user_tables_depends*
_id user_table_id user_table_depend_id
---------- ------------- --------------------
1 1 2
2 1 3
3 2 1
4 2 4
5 4 2当前查询:
SELECT table_name, table_version, table_status,
GROUP_CONCAT(dependName, ', ') AS table_dependencies
FROM user_tables JOIN
(SELECT user_table_id, table_name AS dependName
FROM user_tables_depends, user_tables
WHERE user_tables._id = user_table_depend_id)
WHERE user_tables._id = user_table_id
GROUP BY table_name查询结果:
table_name table_version table_status table_dependencies
---------- ------------- ------------ ------------------
addresses 1 1 jobs, people
jobs 1 1 addresses, phones
phones 1 1 jobs期望的结果:
table_name table_version table_status table_dependencies
---------- ------------- ------------ ------------------
addresses 1 1 jobs, people
jobs 1 1 addresses, phones
people 1 1
phones 1 1 jobs注意:请不要担心值是什么,它们是虚拟数据,我只需要查询在SQLite中按预期工作即可。提前谢谢,干杯。
发布于 2013-07-02 21:53:57
这就是outer joins的用途。并且您应该使用正确的连接语法(使用ON):
SELECT ...
FROM user_tables LEFT JOIN
(...)
ON user_tables._id = user_table_id
GROUP BY ...https://stackoverflow.com/questions/17427256
复制相似问题