トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-91 複数テーブルを等価結合

SQLパズル

作業テーブルと、
案件テーブルと、
報告テーブルを等価結合させる

結合条件は、
作業テーブル.SD_IRAI = 案件テーブル.AM_IRAI = 報告テーブル.KH_IRAI
とする

こちらを参考にさせていただきました


SQL

--■■■all述語を使わない方法■■■
select *
  from 作業テーブル s,案件テーブル a,報告テーブル k
 where s.SD_IRAI = a.AM_IRAI
   and s.SD_IRAI = k.KH_IRAI;

--■■■all述語を使う方法■■■
select *
  from 作業テーブル s,案件テーブル a,報告テーブル k
 where s.SD_IRAI = all(a.AM_IRAI,k.KH_IRAI);


解説

all述語を使って、
等価結合の結合条件をシンプルにできます

ただし、all述語やany述語に値リストを使うのは、
Oracleの拡張機能らしく、
MySQL5.0とPostgreSQL8.1では文法エラーになりました