加入两张表出错了,我真的卡住了

时间:2013-03-17 18:20:52

标签: mysql join prestashop

我有两个表(mysql),包含以下字段:

第一张表ps_cart_product

  • id_cart
  • id_product
  • quantity(这是一个数字字段,包含订购产品的数量)
  • ...

第二张表ps_product

  • id_product
  • reference
  • ...

我需要获取'quantity'字段,该字段包含(给第一个表中的某个id_cart)在第二个表值'ticket'中具有字段'reference'的每个产品的订购数量。 然后我必须'求'返回行的字段值。

这是我的sql代码:

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

结果是错误的...此查询抛出所有字段(3行),其字段值为'ticket',而不是仅给出具有'AND'条件的2字段,这是我想要的结果。 有什么建议吗? 无论如何,这是一个Prestashop数据库。

2 个答案:

答案 0 :(得分:0)

您当前的查询缺少两个表之间的JOIN条件。

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

答案 1 :(得分:0)

您需要在末尾包含where子句以指定ID。连接的目的是基于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