0

モデル、製品、仕様、写真、店舗など、いくつかのテーブルがあります。
それらは次のように関連付けられています。

各製品は (モデル、ストア) に
属します 各画像は (製品) に
属します 各仕様は (製品) に属します

商品一覧が欲しいのですが、


製品の仕様がある場合のみ ( spec.product_id
による)、製品に写真がある場合のみ (picture.product_id による)

どのタイプのクエリが必要ですか?

ありがとう

4

2 に答える 2

1

あなたの定義は非常に完全であり、文字通りに翻訳できます。

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)
于 2012-12-05T07:48:50.810 に答える
-1

これを試して::

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
于 2012-12-05T07:46:40.883 に答える