我有两张桌子
表1:客户
+----+-------+--+
| ID | Name | |
+----+-------+--+
| 1 | Jhon | |
| 2 | Doe | |
| 3 | Magi | |
+----+-------+--+
表2:订单
+-------------+----------+--------------+
| OrderNumber | ItemName | PurchasedBy |
+-------------+----------+--------------+
| 111 | Shirt | 1 |
| 222 | Pant | 2 |
| 333 | Trouser | 2 |
| 444 | T-Shirt | 3 |
| | | |
+-------------+----------+--------------+
我需要编写一个显示在表
下面的查询+--------------+----------------+----------------+
| CustomerName | PurchasedItem1 | PurchasedItem2 |
+--------------+----------------+----------------+
| Doe | Pant | Trouser |
| Jhon | Shirt | Null |
| Magi | T-Shirt | Null |
+--------------+----------------+----------------+
任何人都可以给我一个解决方案吗?我是SQL的新手并且正在努力学习。
答案 0 :(得分:1)
我是SQL的新手并且正在努力学习。
您应该学习的一件事是不要在单独的列中显示多个相关项目。动态添加列在SQL中并不简单,因为它设计用于处理静态列和多个行。
我会从"标准开始#34;每个客户/项目组合显示多行的查询:
SELECT
c.Name CustomerName,
o.ItemName PurchasedItem
FROM Customers c
INNER JOIN Orders o
ON c.ID = o.PurchasedBy
哪会给你结果
+--------------+----------------+
| CustomerName | PurchasedItem |
+--------------+----------------+
| Doe | Pant |
| Doe | Trouser |
| Jhon | Shirt |
| Magi | T-Shirt |
+--------------+----------------+
然后将其留在显示图层(报表,表单,网页等)以处理每个客户的多个项目。在数据层的那一层动态添加列通常会更容易。
答案 1 :(得分:0)
SELECT
c.Name CustomerName,
o.ItemName PurchasedItem
FROM Customers c
INNER JOIN Orders o
ON c.ID = o.PurchasedBy
GROUP BY 1
尝试添加“分组1”。