我在数据库中有两个不同的表,列数不同。现在,我想从第一个表中选择一些行,这取决于某个变量(例如,第一列应该具有值1)。但是,我还想使用其他表中的信息从我的第一个表中选择行。
在我的具体情况中,table1
和table2
都包含Group
和Person
列。表1指定每个人一次,并声明他或她属于哪个组。但是,人们也可以成为辅助组的一部分,这些组列在table2
中。也就是说,在table2
中,可以使用新的组号再次列出一个人。
我想编写一个SQL语句,我从table1
中选择人员(即行)(因为我有关于此表中人员的更多信息)是某个组的成员,{{ 1}}。但是,由于一个人可以属于多个群体,我还需要以某种方式查看x
。
如何编写此SQL语句?
答案 0 :(得分:1)
select t1.person_id,t1.group_id
from table1
union all
select t2.person_id,t2.group_id
from table2
这会给你一张表
person group
person1 group1
person1 group2
person2 group3
无论他们属于哪个表。
但是,如果两个表中都有相同的数据,那么这种架构似乎很愚蠢。
答案 1 :(得分:0)
两个表中都需要某种标识符 - 比如候选键。 当您进行选择时,您需要加入表格,例如:
SELECT column_name(s)
FROM Table1 table_name1
INNER JOIN Table2 table_name2
ON table_name1.column_name=table_name2.column_name
WHERE table_name1.person = table_name2.person
答案 2 :(得分:0)
如果我已正确理解您的问题,下面的查询将为您提供一个人的详细信息,其中该人是“X”组的成员,并且该人与该特定组“X”之间的关系来自维护的记录在table1
或table2
。
SELECT t1.*
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1.Person = t2.Person
WHERE t1.Person = 'Y'
AND (t1.Group = 'X' OR t2.Group = 'X')