从两个表循环访问mysqli查询,为每个客户打印迭代收据

时间:2017-07-27 19:32:06

标签: php mysqli

我创建了两个表和在线订购系统,如下所示:
表1(订单)

orderid |客户名|电子邮件

15 |乔| joe@s.com
 16 | ron | ron@this.com
 17 |蒂姆| tim@nice.com
 18 |起诉| sue@rad.com

和:表2(orderitems)

id | orderid |的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);

这可以得到我需要的一切,除了我想单独分开每个订单,这样我就可以给每个客户发一张收据。我不知道如何实现这一点,我已经用尽所有搜索条件,试图找到我要找的东西。
任何帮助将不胜感激 在此先感谢!!

1 个答案:

答案 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子句限制要包含在结果集中的行