【发布时间】:2015-06-12 06:30:12
【问题描述】:
我有两张表,Product 和 ProductImages。
Product 表有 2 列:ProductID 和 Name
ProductImages 表有 4 列:ID、ProductID、ImageName 和 Primary(bit)。
Product和ProductImages之间的关系是一对多的,所以一个产品可以有很多张图片,但是对于每个产品只有一个ProductImage是Primary。
我需要编写一个查询来获取所有产品及其主图像。如果产品没有主图像,则应获取 ProductId 的第一条记录。
样品表
| 1 | P1 |
| 2 | P2 |
| 3 | P3 |
| 4 | P4 |
产品图片表示例
| 1 | 1 | P1-1 | 1
| 2 | 1 | P1-2 | 0
| 3 | 1 | P1-3 | 0
| 4 | 1 | P1-4 | 0
| 5 | 2 | P2-1 | 1
| 6 | 2 | P2-2 | 0
| 7 | 3 | P3-1 | 0
| 8 | 3 | P3-2 | 0
| 9 | 4 | P4-1 | 0
| 10 | 4 | P4-2 | 0
输出表
| 1 | 1 | P1-1 | 1
| 5 | 2 | P2-1 | 1
| 7 | 3 | P3-1 | 0
| 9 | 4 | P4-1 | 0
我希望我澄清了我的问题。请询问是否需要进一步说明。
【问题讨论】:
-
请定义“ProductID 的第一条记录”这是如何确定的?
-
可以使用 ID 列获取 - 可能是 MIN(PI.ID) 或 MAX(PI.ID)
-
您可以使用连接来获取带有主图像的产品
-
您在哪些条件下选择了主图像???
-
您可以添加示例表数据和想要的结果吗?
标签: sql sql-server sql-server-2008 azure-sql-database