我创建了两个表和在线订购系统,如下所示:
表1(订单)
15 |乔| joe@s.com
16 | ron | ron@this.com
17 |蒂姆| tim@nice.com
18 |起诉| sue@rad.com
和:表2(orderitems)
1 | 15 |索尔多
2 | 15 |四粒
3 | 16 |原始水果
4 | 16 |芬兰黑麦
5 | 16 |索尔多
6 | 17 |索尔多
7 | 18 |原始水果
两个表上的orderid相同,我试图找出如何循环遍历orderitems表中的所有orderid以打印每个客户的收据。
到目前为止,我有一个mysqli声明:var avatar = this;
setTimeout(function () { avatar.turnToMouse(); }, time);
这可以得到我需要的一切,除了我想单独分开每个订单,这样我就可以给每个客户发一张收据。我不知道如何实现这一点,我已经用尽所有搜索条件,试图找到我要找的东西。
任何帮助将不胜感激
在此先感谢!!
答案 0 :(得分:1)
您应该使用带有on
的显式join
(在这种情况下using
,其中两列完全匹配)子句。然后,您可以group by
order
个{id},并将订单项与group_concat
连接起来。
select o.customername as name, o.email as email, group_concat(oi.orderitems) as items
from orders as o
join orderitems as oi using (orderid)
group by orderid
on
语法为:
select o.customername as name, o.email as email, group_concat(oi.orderitems) as items
from orders as o
join orderitems as oi
on o.orderid = oi.orderid
group by orderid
您使用的是宽松的join
,但显式更清晰,更准确。
与ON一起使用的conditional_expr是可以在WHERE子句中使用的表单的任何条件表达式。通常,ON子句用于指定如何连接表的条件,WHERE子句限制要包含在结果集中的行