0

person、person2、person3という3つのテーブルがあります。各テーブルには、name と phno の 2 つのフィールドが含まれています。特定のphnoを指定した場合、クエリは各テーブルにその番号の存在を表示する必要があります

私はこのようなことを試しました:

select a.name as Name, a.phno,
case when a.phno then 'Y' else 'N' end as Phone_Number1,
case when b.phno then 'Y' else 'N' end as Phone_Number2,
case when c.phno then 'Y' else 'N' end as Phone_Number3
from person as a, person2 as b, person3 as c
where a.phno = '123456' and b.phno = '123456' and c.phno = '123456';

このクエリは、すべてのテーブルにその特定の phno の値が含まれている場合にのみ機能します。

私はのように出力する必要があります

phno      Phone_Number1  Phone_Number2  Phone_Number3
123456        Y               Y              Y

すべてのテーブルに存在する場合

phno      Phone_Number1  Phone_Number2  Phone_Number3
123456        N              Y                Y 

存在しない場合は、その特定のテーブルに「N」が表示されます。

4

4 に答える 4

0
SELECT MAX(Phone_Number1) Phone_Number1, MAX(Phone_Number2) Phone_Number2, MAX(Phone_Number3) Phone_Number3
FROM (SELECT "Y" Phone_Number1, "N" Phone_Number2, "N" Phone_Number3
      FROM person
      WHERE phno = '123456'
      UNION
      SELECT "N" Phone_Number1, "Y" Phone_Number2, "N" Phone_Number3
      FROM person2
      WHERE phno = '123456'
      UNION
      SELECT "N" Phone_Number1, "N" Phone_Number2, "Y" Phone_Number3
      FROM person3
      WHERE phno = '123456'
      UNION
      SELECT "N", "N", "N" -- In case they're not in any table
     ) u
于 2013-10-25T07:14:46.353 に答える
0

各ケース/いつに比較を追加してみます:

select a.name as Name, a.phno,
case when a.phno = '123456' then 'Y' else 'N'               end as Phone_Number1,
case when b.phno = '123456' then 'Y' else 'N' end as Phone_Number2,
case when c.phno = '123456' then 'Y' else 'N' end as Phone_Number3
from person as a, person2 as b, person3 as c
where a.phno = '123456' or b.phno = '123456' or c.phno = '123456';
于 2013-10-25T07:10:14.177 に答える