我正在为此SQL苦苦挣扎,希望能够从PID列以及列出的其他两列中进行选择。
SELECT PID, BID AS BAID, SUM(Price*Quantity) AS Total
FROM product
INNER JOIN basket
ON product.PID = basket.PID
WHERE Email = '$email'
基本上,代码可以正常执行,而无需我尝试获取“ PID”列。
在不破坏代码的情况下,我不知道要在哪里包含它。
感谢您的帮助。
我尝试过移动它,甚至将PID AS设置为新列,但似乎没有任何作用。
答案 0 :(得分:0)
您想要一个篮子的总数吗?
SELECT b.BID AS BAID, SUM(p.Price * b.Quantity) AS Total
FROM product p INNER JOIN
basket b
ON p.PID = b.PID
WHERE b.Email = ? -- I am guessing the `Email` is associated with the basket and not the product
GROUP BY b.BID ;
?
是参数的占位符。您应该将比较值作为参数传递,而不要浪费查询字符串。
答案 1 :(得分:0)
由于PID
在两个表中都存在,因此变得模棱两可(这意味着SQL并不知道应该从中选择哪个值,即使它是完全相同的值)。因此,您需要使用语法table.column
指定要从中选择表的表。该表可以用别名替换(p
表为products
,b
表为basket
),这使此操作变得更容易。
在使用诸如GROUP BY
之类的聚合函数时,您也应该SUM()
。
SELECT p.PID, p.BID AS BAID, SUM(Price*Quantity) AS Total
FROM product AS p
INNER JOIN basket AS b
ON p.PID = b.PID
WHERE Email = '$email'
GROUP BY b.BID;
您还应该使用准备好的语句,而不是将变量直接注入查询中,请参见How can I prevent SQL injection in PHP?