6

次の2つのテーブルがあります。

rsrpID  rsrpName
1       Library Catalog
2       Interlibrary Loan
3       Academic Search Complete
4       JSTOR
5       Project Muse
6       LibGuides
7       Web Resource
8       Other (please add to Notes)
9       Credo Reference

rsriID  rsrirsrpID  rsrisesdID
603     6           243
604     1           243
605     7           243
606     8           244
607     6           245
608     8           245

私がやろうとしているのは、最初のテーブル全体を返し、最初のテーブルの rsrpID と一致する 2 番目のテーブルの行について、最初のテーブルの横にある関連する行の行を返すことです。次に例を示します。

rsrpID  rsrpName                    rsrisesdID
1       Library Catalog             243
2       Interlibrary Loan           
3       Academic Search Complete    
4       JSTOR                       
5       Project Muse                
6       LibGuides                   243
7       Web Resource                243
8       Other (please add to Notes) 
9       Credo Reference             

...しかし、私の人生では、これを返す結合ステートメントを理解することはできません。現在、私が与えられたクエリは

select rp.rsrpID as ID, rp.rsrpName as Name,
    (select if((count(rsrisesdID) > 0), 'checked', '') 
         from resourcesintroduced ri 
        where (ri.rsrirsrpID = rp.rsrpID) 
          and (rsrisesdID = 243) ) as 'checked' 
  from resourcesintroduced ri,
     resourcepool rp 
 where rsrisesdID = 243 
 group by ID 
 order by Name asc;

ご覧のとおり、クエリは扱いにくく、特定rsrisesdIDのクエリがまったく表示されない場合、クエリは行をまったく返しません。

4

3 に答える 3

10

外部結合を探しています:

select rp.rsrpID as ID, rp.rsrpName as Name, ri.rsrisesdID
  from resourcepool rp 
  left outer join resourcesintroduced ri on (ri.rsrirsrpID = rp.rsrpID and ri.rsrisesdID = 243)
于 2013-10-17T19:39:56.077 に答える