我可以加入下面的两个表吗?
我的目标是在ASP.NET
中创建一个查询,列出一组数据中消息和 Messages2 中的所有消息。
Messages1:
Messages1_ID,
Thread_ID,
DateCreated,
Title,
Body
Messages2 :
Thread_ID,
Messages2_ID,
DateSent,
DateMsg2Downloaded,
Msg2Subject,
Body
我试过这个问题:
SELECT Messages1.body, Messages2.Body
from Messages1, Messages2
where Messages1 = '9'
Messages1 中有1行, Messages2 中有9行(线程ID为9)
但我得到了 Messages2 中的所有唯一行,并且对于返回的每一行 Messages1 正反复重复
我认为我的桌子设计不正确,但值得先问一下。
答案 0 :(得分:2)
你要找的是一个工会。这将结合两个查询的结果。
SELECT Messages1.body
from Messages1
where Messages1.Thread_ID = '9'
union
SELECT Messages2.Body
from Messages2
where Messages2.Thread_ID = '9'
答案 1 :(得分:1)
SELECT Messages1.body, Messages2.Body
from Messages1
inner join Messages2 ON Messages1.Thread_ID = Messages2.Thread_ID
where Messages1.Thread_ID = '9'
答案 2 :(得分:1)
根据您发布的代码判断,您想使用inner join。
要使用连接,您需要在两个表之间使用公共字段。在我的情况下,我将假设它是threadID。
SELECT a.body, b.Body
from Messages1 a
inner join Messages2 b
on a.Thread_ID = b.Thread_ID
where a.Thread_ID = '9'
答案 3 :(得分:1)
此查询也是正确的,但您错过了条件:Messages1.ThreadId= Messages2.ThreadId
SELECT Messages1.body, Messages2.Body
from Messages1, Messages2
where Messages1.ThreadId= Messages2.ThreadId and Messages1 = '9'
答案 4 :(得分:0)
这里有两个不同的场景,因为我并不是100%确定你的确切追求。
SELECT * FROM
(SELECT m1.body
FROM Messages1 m1
UNION ALL
SELECT m2.Body
FROM Messages2 m2
)
WHERE ThreadId = '9'
OR
SELECT m1.body, m2.Body
FROM Messages1 m1
INNER JOIN Messages2 m2 ON m1.ThreadId = m2.ThreadId
WHERE m1.ThreadId = '9'