[英]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.