モデル、製品、仕様、写真、店舗など、いくつかのテーブルがあります。
それらは次のように関連付けられています。
各製品は (モデル、ストア) に
属します 各画像は (製品) に
属します 各仕様は (製品) に属します
商品一覧が欲しいのですが、
製品の仕様がある場合のみ ( spec.product_id
による)、製品に写真がある場合のみ (picture.product_id による)
どのタイプのクエリが必要ですか?
ありがとう
あなたの定義は非常に完全であり、文字通りに翻訳できます。
select
-- Selecting all fields of product and store.
-- You can refine this by only listing the fields you need.
p.*,
s.*
from
-- need a list of products,
product p
-- with the store they belongs to (by product.store_id)
inner join store s on s.store_id = p.store_id
where
-- ONLY if there are specs for the product (by spec.product_id)
exists
(select
'x'
from
spec ps
where
ps.product_id = p.product_id) and
-- ONLY if a product has pictures (by picture.product_id)
exists
(select
'x'
from
pictures pp
where
pp.product_id = p.product_id)
これを試して::
Select * from
from
product p
inner join model m on (p.model_id=m.id)
inner join store s on (p.store_id=s.id)
inner join picture pc on (p.picture_id=pc.id)
inner join spec sp on (p.spec_id=sp_id)
where product.model_id=some_id
GROUP BY product.id