2017-09-22 10 views
0

次の問合せは、特定の注文に複数の製品が含まれている場合でも、各注文に対して1つの製品を含むセットとなります。SQL:ANDとANDを組み合わせた場合

select orders. *, products. * 
from `orders` 
inner join `products` 
where orders.customer_id = " . $customer_id . " 
    and orders.order_processed > 0 
    and products.product_id in (orders.products) 

(注文商品は69,74,35,21のような文字列です)。

何度も書き直しを試みましたが、目的の結果が得られませんでした。 誰が正しい方向に向けることができますか?ご協力ありがとうございました。

+1

どのようなrdbmsを使用しますか?あなたの '内部結合 'に' on'ステートメントがありません。 'in 'の括弧の間には、ハードコードされた値または' select'ステートメントが必要です。 – HoneyBadger

+1

データ構造を修正してください。 'OrderProducts'テーブルが必要です。コンマ区切りのリストは、そのリストを格納するための間違った方法です。 –

+0

あなたの内部がordersテーブルとproductsテーブルに共通のIDを使用して結合していれば、それはどちらにも存在する値だけを持ちます。 – dbajtr

答えて

0

sqlクエリでIN演算子を使用しました。指定された式と "結果セット"内の一致する値とが一致します。サブクエリを使用してproducts.product_idの結果セットを(orders.products)で取得してみてください

0

IN()を使用すると、おそらくあなたが望むものが得られません。あなたのクエリは次のようになります(推測)

select orders. *, products. * 
from `orders` 
inner join `products` ON orders.product_ID = products.id 
WHERE orders.customer_id = " . $customer_id . " 
    and orders.order_processed > 0 
関連する問題