简体   繁体   English

从一个表中获取重复项以获取另一个表中的记录

[英]Get duplicates from one table for records from another

I've got three tables:我有三张桌子:

Table1:表格1:

id | name         
-------------------
1  | ExampleName1  
2  | ExampleName2 
3  | ExampleName 
4  | Example2Name 
5  | ExampleNamee 

Table2:表2:

id  | text          | idTable1
-------------------------------
20  | ExampleText1  | 1
21  | Ext1          | 1
22  | Text1         | 3
22  | pleText1      | 2

Table3:表3:

id  | login      | idTable1
----------------------------
20  | EEEEEEEE   | 1
5   | WWWWWWWWw  | 2
6   | QQQQQQQQQQ | 1
10  | TTTTTTTT   | 1
11  | OOOOOOOOO  | 2

And I would like to get all records from Table2 but if in table3 there are several records for a given table1ID I would like the data from table2 will be duplicated我想从 Table2 中获取所有记录,但是如果在 table3 中有几个给定 table1ID 的记录,我希望 table2 中的数据将被复制

example: Result from table2 where idTable1 = 1:示例:来自 table2 的结果,其中 idTable1 = 1:

id | text           | idTable1 | Table3Login
---------------------------------------------
20 | ExampleText1   | 1        | EEEEEEEE   
20 | ExampleText1   | 1        | QQQQQQQQQQ 
20 | ExampleText1   | 1        | TTTTTTTT   
21 | Ext1           | 1        | EEEEEEEE 
21 | Ext1           | 1        | QQQQQQQQQQ 
21 | Ext1           | 1        | TTTTTTTT  

What type join to use?使用什么类型的连接?

Make the JOIN of your tables as follows:使您的表的JOIN如下:

Query:询问:

 SELECT T2.id, T2.text, T2.idTable1, T3.login AS Table3Login FROM Table1 AS T1 JOIN Table2 AS T2 ON T1.id = T2.idTable1 JOIN Table3 AS T3 ON T2.idTable1 = T3.idTable1 ORDER BY T2.text;

Results:结果:

 id |编号 | text |正文 | idtable1 | idtable1 | table3login -: |:----------- | table3login -: |:------------ | -------: |:---------- 20 | --------: |:--------- 20 | ExampleText1 |示例文本1 | 1 | 1 | EEEEEEEE 20 | EEEEEEEE 20 | ExampleText1 |示例文本1 | 1 | 1 | QQQQQQQQQQ 20 | QQQQQQQQQQ 20 | ExampleText1 |示例文本1 | 1 | 1 | TTTTTTTT 21 | TTTTTTTT 21 | Ext1 |分机1 | 1 | 1 | EEEEEEEE 21 | EEEEEEEE 21 | Ext1 |分机1 | 1 | 1 | QQQQQQQQQQ 21 | QQQQQQQQQQ 21 | Ext1 |分机1 | 1 | 1 | TTTTTTTT 22 | TTTTTTTT 22 | pleText1 | pleText1 | 2 | 2 | WWWWWWWWw 22 |万维网万维网 22 | pleText1 | pleText1 | 2 | 2 | OOOOOOOOO呜呜呜

Check this dbfiddle working sample here : 在此处检查此 dbfiddle 工作示例


 CREATE TABLE Table1 ( id INT NOT NULL, name VARCHAR(50) ); CREATE TABLE Table2 ( id INT NOT NULL, text VARCHAR(50), idTable1 INT ); CREATE TABLE Table3 ( id INT NOT NULL, login VARCHAR(50), idTable1 INT );
 ✓ ✓ ✓ ✓ ✓ ✓
 ---- INSERT Table1: INSERT INTO Table1 (id, name) SELECT 1, 'ExampleName1'; INSERT INTO Table1 (id, name) SELECT 2, 'ExampleName2'; INSERT INTO Table1 (id, name) SELECT 3, 'ExampleName'; INSERT INTO Table1 (id, name) SELECT 4, 'Example2Name'; INSERT INTO Table1 (id, name) SELECT 5, 'ExampleNamee'; ---- INSERT Table2: INSERT INTO Table2 (id, text, idTable1) SELECT 20, 'ExampleText1', 1; INSERT INTO Table2 (id, text, idTable1) SELECT 21, 'Ext1', 1; INSERT INTO Table2 (id, text, idTable1) SELECT 22, 'Text1', 3; INSERT INTO Table2 (id, text, idTable1) SELECT 22, 'pleText1', 2; ---- INSERT Table3: INSERT INTO Table3 (id, login, idTable1) SELECT 20, 'EEEEEEEE', 1; INSERT INTO Table3 (id, login, idTable1) SELECT 5, 'WWWWWWWWw', 2; INSERT INTO Table3 (id, login, idTable1) SELECT 6, 'QQQQQQQQQQ', 1; INSERT INTO Table3 (id, login, idTable1) SELECT 10, 'TTTTTTTT', 1; INSERT INTO Table3 (id, login, idTable1) SELECT 11, 'OOOOOOOOO', 2;
 SELECT * FROM Table1;
 id |编号 | name -: |:----------- 1 |名称 -: |:------------ 1 | ExampleName1 2 |示例名称1 2 | ExampleName2 3 |示例名称2 3 | ExampleName 4 |示例名称 4 | Example2Name 5 | Example2名称 5 | ExampleNamee示例名称
SELECT * FROM Table2;
 id |编号 | text |正文 | idtable1 -: |:----------- | idtable1 -: |:------------ | -------: 20 | --------: 20 | ExampleText1 |示例文本1 | 1 21 | 1 21 | Ext1 |分机1 | 1 22 | 1 22 | Text1 |文本1 | 3 22 | 3 22 | pleText1 | pleText1 | 2 2
 SELECT * FROM Table3;
 id |编号 | login |登录 | idtable1 -: |:--------- | idtable1 -: |:--------- | -------: 20 | --------: 20 | EEEEEEEE | EEEEEEEE | 1 5 | 1 5 | WWWWWWWWw |万维网万维网 | 2 6 | 2 6 | QQQQQQQQQQ | QQQQQQQQQQ | 1 10 | 1 10 | TTTTTTTT | TTTTTTTT | 1 11 | 1 11 | OOOOOOOOO |噢噢噢噢噢2 2

This is the query:这是查询:

 -- This is the query: SELECT T2.id, T2.text, T2.idTable1, T3.login AS Table3Login FROM Table1 AS T1 JOIN Table2 AS T2 ON T1.id = T2.idTable1 JOIN Table3 AS T3 ON T2.idTable1 = T3.idTable1 ORDER BY T2.text;

Results:结果:

 id |编号 | text |正文 | idtable1 | idtable1 | table3login -: |:----------- | table3login -: |:------------ | -------: |:---------- 20 | --------: |:--------- 20 | ExampleText1 |示例文本1 | 1 | 1 | EEEEEEEE 20 | EEEEEEEE 20 | ExampleText1 |示例文本1 | 1 | 1 | QQQQQQQQQQ 20 | QQQQQQQQQQ 20 | ExampleText1 |示例文本1 | 1 | 1 | TTTTTTTT 21 | TTTTTTTT 21 | Ext1 |分机1 | 1 | 1 | EEEEEEEE 21 | EEEEEEEE 21 | Ext1 |分机1 | 1 | 1 | QQQQQQQQQQ 21 | QQQQQQQQQQ 21 | Ext1 |分机1 | 1 | 1 | TTTTTTTT 22 | TTTTTTTT 22 | pleText1 | pleText1 | 2 | 2 | WWWWWWWWw 22 |万维网万维网 22 | pleText1 | pleText1 | 2 | 2 | OOOOOOOOO呜呜呜

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将记录从一张表更新到另一张表 - how to update the records from one table to another 需要从一个表中获取所有记录,这些记录匹配从另一个表返回的值 - Need to get all records from one table, that match values I return from another table 如何使用WinForms中的C#从一个表中获取所有记录并将其保存到另一表中? - How to get all records from one table and save it on another table by c# in winforms? 如何将表记录从一个表复制到另一个数据库中的另一个表 - How to copy table records from one table to another in different databases 无法将记录从一个表复制到Entity Framework MVC中的另一个表 - Unable to copy records from one table to another in Entity Framework MVC 如何在Linq中将记录从一个表移动到另一个表 - How to move records from one table to another in linq 从另一个表中获取一个表的值 - Get value of one table from another 使用Linq按照另一个表中的记录数排序获取列表 - Get List ordered by number of records from another table using Linq 从一个表中选择记录,检查它是否在另一个表中,然后插入C#中的第三个表中 - Select records from one table, check if it exists in another table then insert into a 3rd table in C# 使用linq到实体从表中获取重复项 - get duplicates from a table using linq to entities
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM