0

2 つのテーブルから選択して、WHERE (PL/SQL) を使用してデータを別のテーブルに配置しようとしています。

私はそれらのような2つのテーブルを持っています:

表1

ID  NAME  COLOR  COMPANY_SHORT_NR
1   a     Green  1
2   b     Red    23
3   c     Blue   null
4   a     Green  null
5   g     Green  1

テーブル2

ID  SHORT COMP_NAME
1   1     company_name_1 
2   23    comapny_name_2

そして今、テーブル1からすべてのデータを会社名で取得したいと思います.nullの場合、そのようにnullになります

1   a     Green  company_name_1 
2   b     Red    comapny_name_2 
3   c     Blue   null
4   a     Green  null
5   g     Green  company_name_1 

私はこのようにしてみました:

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
    ,table2
where COMPANY_SHORT_NR = SHORT 

しかし、これはnull値ではありません:

1   a     Green  company_name_1 
2   b     Red    comapny_name_2 
5   g     Green  company_name_1 

このようにsthを使用する場合:

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
    ,table2
where COMPANY_SHORT_NR = SHORT or COMPANY_SHORT_NR is null

私は何千ものレコードを取得します...それIS NULLよりものみを使用すると、本来あるべき2行しか返されません。

どこで間違えますか?

4

3 に答える 3

1

そのために OUTER JOIN が必要です

select ID
      ,NAME
      ,COLOR
      ,COMPANY_SHORT_NR
from table1
     LEFT OUTER JOIN table2 ON ( COMPANY_SHORT_NR = SHORT )
于 2013-06-21T13:19:00.673 に答える
0

テーブルに参加したほうがいいでしょうか?お気に入りSELECT ID, NAME, COLOR, COMPANY_SHORT_NR FROM table1 t1 LEFT JOIN table2 t2 on t2.SHORT = t1.COMPANY_SHORT_NR WHERE 1

于 2013-06-21T13:19:31.647 に答える