1

理解を深めるために、例の表を使用して質問を改善しました

次の行を持つ 3 つのテーブルがあります。

TABLE1 t1                 TABLE t2              TABLE t3

ID   NAME    OBS          ID   HW_VER           ID   SERIAL
-----------------         -----------           ------------
1  | Name1 | Obs1         1  | HWVer1           5  | Serial5
2  | Name2 | Obs2         2  | HWVer2           6  | Serial6
3  | Name3 | Obs3         3  | HWVer3           7  | Serial7
4  | Name4 | Obs4
5  | Name5 | Obs5
6  | Name6 | Obs6
7  | Name7 | Obs7

ここで、2 つの条件が満たされたときに ID、名前、OBS を選択したいと思います。

  1. id は t2 または t3 に存在します (両方には存在しません)。
  2. t2 または t3 属性 (例: t2.HW_VER='HWVER1') のいずれかを参照し、両方を参照することはありません

私はこのようなことをしましたが、それは間違っています:

SELECT DISTINCT t1.id, t1.name, t1.obs
FROM table1 t1, table2 t2, table3 t3
WHERE t1.id IN (t2.id, t3.id) AND t3.serial='Serial6';

これにはユニオン、外部テーブル、またはビューを使用できません。さらに質問がある場合はお知らせください。

あなたの答えをありがとう、私はあなたの時間を本当に感謝しています..

4

1 に答える 1

0

T2 または T3 から選択する必要がありますが、両方を選択する必要はありませんか? 私はあなたがこのようなものが欲しいと思います

select count(*)
from t1
where exists (
    select 'x'
    from t2 
    where MyPrimaryKey_Name = 'random_name'
    and t2.id = t1.id
)
or exists (
    select 'x'
    from t3 
    where MyPrimaryKey_Name = 'random_name'
    and t3.id = t1.id
)
于 2013-02-19T00:34:46.913 に答える