2011-07-18 12 views
2

今私は今SQLを学び始めている: 私のアップロードした画像を見て、id_product = 45でどのようにすべての製品カテゴリをフィルタリングできるのかを教えてください。 、45-2および製品グループからの列1を含む。再び条件付きの2つのSQLテーブルを結合する

:私はそれは、私の悪い英語のためのSRY説明するのは容易ではありません= 45

id_productでALL product_groups行(1,2,3)および関連id_category(PRODUCT_CATEGORY)を持つことになります。..

ここで

The two SQL Tables

SELECT 
    id, title, multiplayer, id_product 
FROM 
    product_category 
RIGHT OUTER JOIN products_groups ON 
    rg_product_category.id_category = products_groups.id 
WHERE 
    product_category.id_product = '45' OR 
    product_category.id_product IS NULL AND products_groups.type = 'Game'; 
:-(空の値でID = 3 product_groupsとid_productからIDを持つすべての行を与えるSQL-Queryが45 =ではありません210

ありがとうございました

+1

はNULL AND products_groups.type =「ゲーム」 – plague

+0

IS製品グループ3は、型「ゲーム」を持っていますか?また、クエリを前後に反転させることを検討してください。 LEFT結合は、通常、RIGHT結合より読みやすくなります。 – Simon

+0

はい、商品グループの列タイプに「ゲーム」タイプがあります。画像を見てください:-) – Patrik

答えて

4

私はあなたが望むものを理解していると思います。一致しない場合はすべてのproduct_groupsをヌル値で表示します。このお試しください:あなたはproduct_category.id_productの周りに括弧が欠けているように見えるいずれかの

SELECT 
    id, title, multiplayer, id_product 
FROM products_groups 
LEFT JOIN product_category 
    ON product_category.id_category = products_groups.id 
    AND product_category.id_product = '45' 
WHERE products_groups.type = 'Game'; 
+0

ちょっと、このクエリは、テーブル "product_groups"から値id = "3"を持っていません。私は結果テーブルにid = "3"が必要です。残りのクエリは正しいです。 – Patrik

+0

@ボヘミアン: 'FROM products_groups LEFT JOIN product_category'を逆転してください。 –

+0

Opps - thx @ypercube! – Bohemian

関連する問題