我有多个包含行的表。
我必须制作一个包含特定行id的表,标签名称和id所属的表,以便如果我想搜索标签,我将获得多个表中存在的行结果。
如:表1
id | name | column 1
1 | A | ..
2 | B | ..
3 | C | ..
表2
id | name | column 1 | column 2
1 | D | .. | ..
2 | E | .. | ..
3 | F | .. | ..
表3
id | name
1 | G
2 | H
3 | I
上面的表是包含数据的多个表。
<<p>标记表/strong>Student Id | Tags | From which table it belongs to
1 | Good Boy | Table 1
1 | Good Boy | Table 2
3 | Good Boy | Table 1
2 | Bad Boy | Table 1
1 | Bad Boy | Table 3
如果我想检索好孩子的数据。
预期输出
Id | name
1 | A
1 | D
3 | C
请告诉我如何插入这样的数据,以便我可以搜索好男孩或坏男孩的数据。
理想情况下,您应该将所有三个表中的数据存储在一个表中,另一列用于BelongsTo
。
您可以通过将所有表合并在一起来制造它,然后您只需对结果进行连接。
SELECT
t.id,
t.Name
FROM Tag
JOIN (
SELECT t.id, t.Name, 'Table1' BelongsTo
FROM table1 t
UNION ALL
SELECT t.id, t.Name, 'Table2'
FROM table2 t
UNION ALL
SELECT t.id, t.Name, 'Table3'
FROM table3 t
) t ON t.id = Tag.StudentId AND Tag.BelongsTo = t.BelongsTo
WHERE Tag.Tags = 'Good Boy';
,db<的在小提琴