【发布时间】:2013-09-17 08:51:41
【问题描述】:
最近几天一直困扰着我的 SQL 查询一直困扰着我。我希望你们能帮助我!
我将为购物车创建发票。发票保存在两个表中。第一个表“ordre”包含有关用户的信息,发票是否已支付以及日期等。第二个表“ordreelementer”包含属于该发票的所有项目。
我的问题来了。我到底如何获得打印包含客户详细信息的发票所需的所有信息,以及他/她购买的物品?我尝试了不同的 SQL JOINS,但没有按预期工作。这里的任何帮助将不胜感激!我正在编写 PHP 并运行 MySQL 数据库。
这是我最新的 SQL 语句
$sql = "SELECT ordre.id,
ordre.uid,
ordre.dato,
ordre.status,
ordre.betalt,
ordre.navn,
ordre.adresse,
ordreelementer.oid,
ordreelementer.navn AS elnavn,
SUM(ordreelementer.ant * ordreelementer.stkpris) AS tot
FROM ordre
INNER JOIN ordreelementer
ON ordre.id=ordreelementer.oid
WHERE ordre.uid = ".brukerInfo('id')." AND ordre.id = ".$id."";
非常感谢所有帮助!
【问题讨论】:
-
如果1个订单中有很多商品,您应该使用
LEFT JOIN -
SQL 中的
SUM函数是一个分组函数。这意味着它需要一个GROUP BY函数,如果你没有一个函数,它会像整个结果被分组一样。您的问题是只看到一个结果吗? -
看起来他只想要一个 ordre.id 的结果,所以应该不错。正如 dianuj 提到的,LEFT JOIN orderelementer 而不是 INNER JOIN 应该这样做。
-
LEFT 和 RIGHT JOIN 没有区别。我试图更改为 LEFT,并删除 SUM()。没有不同。此 SQL 仅显示用户创建的一张发票。我只使用“ordre”表中的一行,但“ordreelementer”中的一个未知数字。这取决于用户在订购之前将多少商品添加到购物车中。