0

次のフィールドを持つ2つのテーブル(mysql)があります。

最初の表ps_cart_product

  • id_cart
  • id_product
  • quantity(これは、注文された製品の数を含む数値フィールドです)
  • ..。

2番目の表ps_product

  • id_product
  • reference
  • ..。

(最初のテーブルから特定のid_cartが与えられた場合)2番目のテーブル値'ticket'にフィールド'reference'を持つ各製品の注文数量を含む'quantity'フィールドを取得する必要があります。次に、返される行のフィールド値を「合計」する必要があります。

これは私が持っているSQLコードです:

SELECT DISTINCT cp.quantity
FROM ps_cart_product cp 
JOIN  ps_product p ON cp.id_cart = 84
AND p.reference = "ticket"

結果は間違っています...このクエリは、値が「ticket」のフィールドを持つすべてのフィールド(3行)をスローします。必要な結果である「AND」条件を持つ2つのフィールドだけを指定するのではありません。なにか提案を?とにかく、これはPrestashopデータベースです。

4

2 に答える 2

0

JOIN現在のクエリには、2つのテーブル間の条件がありません。

select DISTINCT cp.quantity
from ps_cart_product cp
inner join ps_product  p
  on cp.id_product = p.id_product -- < this is missing
where p.reference = 'ticket'
  and cp.id_cart = 84

次にsum()、数量が必要な場合は、次を使用できます。

select sum(cp.quantity) TotalQuantity
from ps_cart_product cp
inner join ps_product  p
  on cp.id_product = p.id_product
where p.reference = 'ticket'
  and cp.id_cart = 84
于 2013-03-17T18:37:09.300 に答える
0

IDを指定するには、最後にwhere句を含める必要があります。結合の目的は、where句で指定された値に基づいて、同一のレコードの一致テーブルを作成することです。

SELECT DISTINCT cp.quantity
FROM ps_cart_product cp 
INNER JOIN  ps_product p ON cp.id_cart = p.id_product
AND p.reference = "ticket"
Where cp.id_cart = 84
于 2013-03-17T18:38:28.700 に答える