我有两个我需要加入的MYSQL表,第一个叫做命令,另一个叫做orderdetails。问题是这样的;每个订单可以有多个订单详细信息。我希望以这样的方式加入它们:输出只为每个订单生成一行,其相关的productcode和productname条目分别在productcode1,productcode2 ... productcode5和productname1 ... productname5中。我已经看到类似问题的答案,使用GROUP_CONCAT将条目放入单个列但有没有办法将条目放入列中?感谢
orders +-------------+ |orderid | |firstname | |secondname | |paymentamount| +-------------+ ordersdetails +----------------+ | ordersdetailid | | orderid | | productcode | | productname | +----------------+ Output +----------------+ | orderid | | productcode1 | | productcode2 | | productcode3 | | productcode4 | | productcode5 | | productname1 | | productname2 | | productname3 | | productname4 | | productname5 | +----------------+
答案 0 :(得分:0)
使用union
:
select orderid from orders where orderid=?
Union
select orderid from ordersdetails t1 join orders t2 on t1.orderid=t2.orderid where orderid=?
答案 1 :(得分:0)
使用#include<stdio.h>
#include<conio.h>
void main()
{
int names[] = {23,23,34};
int *nam[] = { names, names+1 , names +2};
char *temp;
clrscr();
printf("%u" , (nam));
getch();
}
。
<强>查询强>
UNION ALL
出于分类目的,
SET @o_id := 2; -- your order id here
SELECT orderid AS order_details
FROM orders
WHERE orderid = @o_id
UNION ALL
SELECT productcode FROM ordersdetaild
WHERE orderid = @o_id
UNION ALL
SELECT productname FROM ordersdetaild
WHERE orderid = @o_id;
答案 2 :(得分:0)
您的输出意味着您不希望每个产品只有一行,但您的问题表明您这样做。因此人们正在回答使用UNION。我不认为这是你的意思。
我认为你真正想做的是输出如下内容: OrderId,ProductCode1,ProductCode2,ProductName1,ProductName2。
如果这是正确的,您可以从几个查询中构造它。 首先在OrderId上转动OrderDetails表,输出ProductCode。 然后,对ProductName执行相同的操作。
然后,您应该能够针对这两个透视表加入Order表,以获得具有所有订单明细的订单的单行,其方式与我所解释的一样。