0

总之,我已经提供了数据,以及目前的结果,请告诉我如何做最后一步。请使用 SQLite。

== 书面说明 ==

想使用表 B 连接表 A 中的值,然后显示表 A 中的所有结果,即使是表 B 中没有值的结果。我尝试了一大堆变体,我真的被卡住了。

表:

*用户表*

_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 中按需要工作即可。提前谢谢,干杯。

4

1 回答 1

0

这就是外连接的用途。你应该使用正确的连接语法(with ON):

SELECT ...
FROM user_tables LEFT JOIN 
    (...)
    ON user_tables._id = user_table_id
GROUP BY ...
于 2013-07-02T13:53:56.840 回答