我有两个表(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数据库。
答案 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