我有两张包含两种不同评论的表格。其中一个表包含来自用户的注释(因此它有一个包含其用户ID的外键),另一个表包含来自未登录用户的注释(因此它没有任何用户ID,而是包含一个名称,电子邮件等。)
现在,当我需要打印这些注释时,我希望它们位于相同的列表中,按其created_at值排序。所以我需要做两个不同的查询(第一个也与用户表连接,找到用户名等),然后结合结果。
我以为我可以做一个UNION,但是当表有不同的字段时,这不起作用。我可以通过合并两个结果数组在我的应用程序逻辑中完成它,但如果有一个更好的解决方案可以直接在数据库中完成,那么这似乎很麻烦。
答案 0 :(得分:1)
通过指定UNION
部分中的字段来对齐两个表时,您仍然可以使用SELECT
。
示例:
Table1(id,comment,enterdate,userid)
Table2(id,comment,enterdate)
SELECT id, comment, enterdate, userid, 'Logged In' as Type FROM Table1
UNION
SELECT id, comment, enterdate, NULL, 'Guest' FROM Table2
然后可以根据需要订购UNION
。
答案 1 :(得分:0)
如果您将第一个表的userId和第二个表中的名称命名为ex,则可以使用您建议的UNION sollution。身份
从loggedUsers UNION中选择userId作为Identity,created_at作为日期 选择名称作为Identity,created_at作为来自guestUsers的日期
希望有所帮助......