1

我在数据库中有两个不同的表,列数不同。现在,我想根据某个变量从第一个表中选择一些行(例如,第一列的值应该为 1)。但是,我还想使用我的另一个表中的信息从我的第一个表中选择行。

在我的具体情况下,两者table1和都table2包含列GroupPerson。表 1 指定每个人一次,并声明他或她属于哪个组。但是,人们也可以是第二组的一部分,这些组列在table2. 也就是说,在 中table2,可以使用新的组号再次列出一个人。

我想编写一个 SQL 语句,从中选择table1某个组的成员(因为我有有关此表中人员的更多信息)中的人员(即行) x,. 但是,由于一个人可以属于多个组,因此我也需要以table2某种方式查看。

我该如何编写这个 SQL 语句?

4

3 回答 3

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

无论它们属于什么表。

但是,如果两个表中都有相同的数据,这种架构似乎很愚蠢。

于 2012-10-24T07:36:28.007 回答
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
于 2012-10-24T07:39:25.740 回答
0

如果我正确理解了您的问题,则下面的此查询将为您提供一个人的详细信息,该人是“X”组的成员,并且该人与该特定组“X”之间的关系来自table1table2.

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')
于 2012-10-24T07:40:12.423 回答