我一直在用这个Query一开始,然后用了这个Query终于 哪些是
##Query[1]
SELECT t.title, p.content, p.version
FROM drafts d
INNER JOIN titles t ON t.id = d.tp_id AND d.t = 1
INNER JOIN posts p ON p.id = d.tp_id AND d.t = 2
WHERE user_id = 1
##Query[2]
SELECT coalesce(p.title, t.title), p.content, p.version
FROM drafts d
INNER JOIN titles t ON t.id = d.tp_id AND d.t = 1
INNER JOIN
(
SELECT pt.id, tp.title, pt.content, pt.version
FROM posts pt
INNER JOIN titles tp ON tp.id = pt.tid
) p ON p.id = d.tp_id AND d.t = 2
WHERE user_id = 1
我想要做什么使用Table:drafts
来使用
Column: tp_id
作为其他表中Column: id
的标识符。列:user_id
作为拥有草稿的用户的id
。Column: t
作为Tables:titles[t=1], posts[t=2]
中的表的标识符,从中获取记录它。
在Table: posts
中,Column:tid
链接到Table:titles
的Column:id
用于拉取Column: title
。
如果表:标题
不存在,我希望不显示任何记录,并且如果标题相关,则表:帖子
不显示任何记录在Table:titles
上使用tid
不存在或者Table:posts
的记录不存在,这就是我使用的原因>内连接
。
但是在这两个查询中我根本没有得到任何结果。
这是否是正确的 table scheme and design 用于类似两个不同牌 table 的草稿 table ,而不是每个牌 table 一个?
我期望的结果是这样的
title content version
TheTitle null null
TheTitle Content1 1
TheTitle Content2 2
TheTitle Content3 3
TheTitle Content4 4
TitleThe Content1 1
TitleThe Content2 2
TitleThe Content3 3
TitleThe Content4 4
<小时/>
一个简单的例子:
[table-a] [table-b]
[id - title ] [id - table_a_id - content ]
[1 - title-1] [1 - 1 - content-1]
table-a
具有标题
。table-b
具有每个的内容
标题
。table-b
列将content
链接到table-a
的标题。
table_a_id
的 [table-ab]
[user_id - table_col_id - table_letter]
[1 - 1 - a ]
[1 - 1 - b ]
table-ab
有user_id
来告诉哪个用户将显示记录。table-ab
有table_letter
告诉查询从哪个表中获取数据。
我希望查询做的是检查table-ab
并根据它从其他表中获取数据,所以它会是
table_letter = a
=> 从table-a
中获取行。table_col_id = 1
=> 从table-a
WHEREid = 1
获取行。
结果 = title-1
table_letter = b
=> 从table-b
中获取行。table_col_id = 1
=> 从table-b
WHEREid = 1
获取行。
结果 = title-1 - content-1
Final result:
id - title - content
-------------------------
1 - title-1 - null
2 - title-1 - content-1
最佳答案
执行两个单独的查询(对于 t=1 和 t=2)并使用 UNION ALL
组合结果:
SELECT t.title, null content , null version
FROM drafts d
INNER JOIN titles t
ON t.id = d.tp_id
WHERE d.user_id = 1 and d.t = 1
UNION ALL
SELECT pt.title, pt.content, pt.version
FROM drafts d
INNER JOIN
( SELECT p.id, t.title, p.content, p.version
FROM posts p
INNER JOIN titles t ON t.id = p.tid ) pt
ON pt.id = d.tp_id AND d.t = 2
WHERE d.user_id = 1
关于mysql - 无法正确从两个表中选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49611006/