【发布时间】:2010-10-09 00:50:07
【问题描述】:
考虑以下架构:
顾客: 上校 |类型 | -------------------| 编号 |整数 | 姓名 | VARCHAR | 命令: 上校 |类型 | ----------------------| 编号 |整数 | 客户 ID |整数 | 日期 |日期 | 项目 上校 |类型 | ----------------------| 编号 |整数 | order_id |整数 | 姓名 | VARCHAR | 数量 |整数 |这是架构的简要说明: 客户可以有很多订单,一个订单可以有很多商品 注意:您可能会争辩说,这些项目应该引用一些带有 product_id 的产品表,但让它像现在一样简单。
从我的数据库中,我想问以下问题:
对于给定的客户,列出所有以 La 开头的项目。
我的查询版本如下:
SELECT * FROM items WHERE name LIKE 'La%'
这将为所有客户返回所有以 La 开头的项目。我想要的是我得到一个特定客户的所有项目,比如 id 1。我该如何编写这样的查询?我的第二个版本是这样的:
SELECT * FROM items WHERE name LIKE 'La%' AND order_id in (SELECT id FROM orders WHERE customer_id=1);
但是他们是否还有其他高效/优雅或更好的方式来做同样的事情?
【问题讨论】:
标签: sql