我想检索订单行中加入的无限数量的产品。例如,用户已按单个顺序选择了10个项目,我想使用order_id在单行中显示每个product_id和product_slug。送货地址也在最后一栏中添加。
我的表就像这样
## Orders Table ##
order_id | customerId | order_date | status | verification_code
1 7 2014-04-04
2 10 2014-04-04
## Order Items Table ##
item_id | orderId | productId | qty | status
1 1 21 2
2 1 22 1
3 2 21 3
4 2 23 1
product_id | user_id | product_slug
1 11 new-t-shirt
2 12 denim-jeans
3 13 t-shirt
4 14 jacket
我想显示这样的结果
Order_ID | Product_ID1 | Product_slug1 | Product_ID2 | Product_slug2
_____________________________________________________________________
1 21 T-shirt 22 Jeans
2 21 T-Shirt 23 Denim-Jeans
答案 0 :(得分:0)
您无法动态添加列,具体取决于已连接的行数,因为每个订单可能具有不同数量的列,但您可以执行的操作是将它们全部连续列出:
SELECT orders.order_id, GROUP_CONCAT(products.product_id SEPERATOR ','), GROUP_CONCAT(products.product_slug SEPERATOR ',')
FROM orders
JOIN items
ON orders.order_id = items.order_id
JOIN products.product_id = items.product_id
GROUP BY orders.order_id
这会在每一行中创建以逗号分隔的列表。从那里你可以浏览product_ids和product_slugs列表来做你想做的任何事情。
有关GROUP_CONCAT的信息,请参见此处:https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat