加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

连接表和多个值的SQL查询

发布时间:2020-12-12 06:39:59 所属栏目:MsSql教程 来源:网络整理
导读:所以我有三个表涉及我的问题,2个常规表和一个连接表,有很多,属于很多关系.它们看起来像这样: table1--id--datatable2--id--datatable1_table2--table1_id--table2_id 所以,我的问题是我如何查询(使用连接)表格中的一个项目中table1_table2中有一个或多个值的
所以我有三个表涉及我的问题,2个常规表和一个连接表,有很多,属于很多关系.它们看起来像这样:
table1
--id
--data

table2
--id
--data

table1_table2
--table1_id
--table2_id

所以,我的问题是我如何查询(使用连接)表格中的一个项目中table1_table2中有一个或多个值的内容.例如:

Table 1
+----------+
|id | data |
+----------+
|1  | none |
+----------+
|4  | match|
+----------+

Table 2
+----------+
|id | data |
+----------+
|1  | one  |
+----------+
|2  | two  |
+----------+

table1_table2
+----------------------+
|table1_id | table2_id |
+----------------------+
|1         | 1         |
+----------------------+
|4         | 1         |
+----------------------+
|4         | 2         |
+----------------------+

我需要一个与表1行id 4匹配的查询,因为它有一个通过连接的链接到表2中的第1行和第2行.如果这很令人困惑,请问任何问题.

也许我有点不清楚,我使用table1_table2作为连接而不是来自.我需要确保它与表2中的1和2相匹配.

这是我到目前为止的查询…

SELECT DISTINCT table1.id,table2.data

FROM table1

LEFT JOIN table1_table2 ON table1.id = table1_table2.table1_id
LEFT JOIN table2 ON table2.id = table1_table2.table2_id

我需要一个能够使表1中的条目与表2中的1和2匹配的位置.

我正在寻找的输出将是:

+---------------------+
|table1.id|table2.data|
+---------------------+
|4        |one        |
+---------------------+
|4        |two        |
+---------------------+

解决方法

如果您可以保证Table1_Table2表中没有重复项,则以下方法有效.也许你可以从这里开始并稍微细化一下.注意JOIN条件是如何工作的 – 将IN放在连接条件中的工作方式与将WH条件放在WHERE子句中的方式不同.

我已经将哈希标记用于将代码插入SQL所需的值.

SELECT Table1.id,COUNT(Table1_Table2.Table2_id)
FROM Table1
JOIN Table1_Table2 ON (Table1_Table2.Table1_id = Table1.id
                   AND Table1_Table2.Table2_id IN (#somelist#))
GROUP BY Table1.id
HAVING COUNT(Table1_Table2.Table2_id) = (#length of somelist#)

哎呀 – 你已经按我建议的方式改变了你的问题,我忽略了你的编辑.但这应该让你开始,因为它返回你感兴趣的所有Table1 id.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读