Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个表上对消息执行SQL连接_Sql_Sql Server_Vb.net_Join - Fatal编程技术网

在两个表上对消息执行SQL连接

在两个表上对消息执行SQL连接,sql,sql-server,vb.net,join,Sql,Sql Server,Vb.net,Join,我可以加入下面的两张表吗 我的目标是在ASP.NET中创建一个查询,以在一组数据中列出messages和Messages2中的所有消息 消息1: Messages1_ID, Thread_ID, DateCreated, Title, Body 消息2: Thread_ID, Messages2_ID, DateSent, DateMsg2Downloaded, Msg2Subject, Body 我尝试了以下查询: SELECT Messages1.body, Message

我可以加入下面的两张表吗

我的目标是在
ASP.NET
中创建一个查询,以在一组数据中列出messages和Messages2中的所有消息

消息1:

Messages1_ID,
Thread_ID,  
DateCreated,
Title,     
Body
消息2

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,body会一次又一次地重复


我认为我的桌子设计不正确,但首先值得一问。

你要找的是工会。这将合并两个查询的结果

SELECT Messages1.body, Messages2.Body
from Messages1 
inner join  Messages2 ON Messages1.Thread_ID  = Messages2.Thread_ID
where Messages1.Thread_ID = '9'
SELECT Messages1.body
from Messages1
where Messages1.Thread_ID = '9'
union
SELECT Messages2.Body
from Messages2
where Messages2.Thread_ID = '9'

你要找的是工会。这将合并两个查询的结果

SELECT Messages1.body
from Messages1
where Messages1.Thread_ID = '9'
union
SELECT Messages2.Body
from Messages2
where Messages2.Thread_ID = '9'

根据您发布的代码判断,您希望使用

要使用联接,两个表之间需要一个公共字段。我假设你的情况是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'

根据您发布的代码判断,您希望使用

要使用联接,两个表之间需要一个公共字段。我假设你的情况是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'

这里有两种不同的情况,因为我不能100%确定你到底在追求什么

SELECT * FROM
(SELECT m1.body
FROM Messages1 m1
UNION ALL
SELECT m2.Body
FROM Messages2 m2
)
WHERE ThreadId = '9'


这里有两种不同的情况,因为我不能100%确定你到底在追求什么

SELECT * FROM
(SELECT m1.body
FROM Messages1 m1
UNION ALL
SELECT m2.Body
FROM Messages2 m2
)
WHERE ThreadId = '9'


此查询也正确,但您忽略了以下条件:
Messages1.ThreadId=Messages2.ThreadId

SELECT Messages1.body, Messages2.Body
from Messages1, Messages2
where Messages1.ThreadId= Messages2.ThreadId and Messages1 = '9'

此查询也正确,但您忽略了以下条件:
Messages1.ThreadId=Messages2.ThreadId

SELECT Messages1.body, Messages2.Body
from Messages1, Messages2
where Messages1.ThreadId= Messages2.ThreadId and Messages1 = '9'

这两个表之间的公共字段是什么?他们之间的关系如何。是通过线程ID吗?您的输入和预期输出是什么?很难辨别,因为SQL没有提供您想要的。这两个表之间的公共字段是什么?他们之间的关系如何。是通过线程ID吗?您的输入和预期输出是什么?很难辨别,因为你的SQL没有给你你想要的。你应该在每个SQL语句中为
Thead_id=9
@JNevill添加一个WHERE语句,我不知道该怎么做,因为问题中不清楚这就是问题所在!谢谢你们所有人的快速回复。我应该在每个
Thead_id=9
@JNevill的回复中都添加一个WHERE语句。我不知道该怎么做,因为问题中不清楚这是一个!感谢大家的快速回复。编辑以删除最后2条编辑以删除最后2条