0

条件付きの2つのテーブルを選択し、すべてのデータを表示する方法

store_profile
id + store_name
1  | Accessorize.me 
2  | Active IT 
3  | Edushop
4  | Gift2Kids
5  | Heavyarm 
6  | Bamboo 

store_fee
id + store_id + date_end
1  |    1     | 27-6-2013
2  |    2     | 29-8-2013
3  |    3     | 02-6-2013
4  |    4     | 20-4-2013

以下は私の以前のクエリです

$query = "select sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end from store_profile sp, store_fee sf where sf.store_id=sp.id"

結果は次のようになります:

1  | Accessorize.me  27-6-2013
2  | Active IT       29-8-2013
3  | Edushop         02-6-2013
4  | Gift2Kids       20-4-2013

しかし、私が欲しいのは、すべての店舗名を表示することですが、それでも表示できdate_endない場合はdate_end、空の店舗名を表示できますdate_end

4

3 に答える 3

1

左結合を使用します。

select sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end 
from store_profile sp left join store_fee sf on sf.store_id=sp.id
于 2013-02-20T02:15:22.460 に答える
1

使用している構文は として解釈されます。INNER JOINつまり、対応するエントリのないストアstore_profileは表示されません。使用したいLEFT JOIN

SELECT sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end 
FROM store_profile sp
LEFT JOIN store_fee sf 
ON sf.store_id=sp.id

LEFT JOIN2 番目のテーブルに一致がない場合でも、最初のテーブルのすべてのレコードが返されることを意味します。

于 2013-02-20T02:15:57.563 に答える
1

外部結合を使用したい。外部結合では、結果を取得するために結合テーブルの列が結合テーブルの条件付き列と一致する必要はありません。

SELECT * FROM store_profile sp LEFT JOIN store_fee sf ON (sf.store_id = sp.id)
于 2013-02-20T02:15:58.927 に答える