1

データベースに、列数が異なる 2 つの異なるテーブルがあります。ここで、変数に応じて最初のテーブルからいくつかの行を選択したいと考えています (たとえば、最初の列の値は 1 である必要があります)。ただし、他のテーブルからの情報も使用して、最初のテーブルから行を選択したいと考えています。

私の特定のケースでは、 と の両方に列 と が含まれていtable1ます。Table1 は、各人物を 1 回指定し、その人物が属するグループを宣言します。ただし、人は にリストされている二次グループの一部になることもできます。つまり、では、個人を新しいグループ番号で再度リストすることができます。table2GroupPersontable2table2

特定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

これにより、1つのテーブルが得られます

person group
person1 group1
person1 group2
person2 group3

それらがどのテーブルに属しているかに関係なく。

ただし、同じデータが両方のテーブルにある場合、このアーキテクチャはばかげているように見えます。

于 2012-10-24T07:36:28.007 に答える
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')
于 2012-10-24T07:40:12.423 に答える
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 に答える