考虑下面的模式:SQL:搜索盛大子表specifc项目
Customers: Col | Type | -------------------| id | INTEGER | name | VARCHAR | Orders: Col | Type | ----------------------| id | INTEGER | customer_id | INTEGER | date | DATE | Items Col | Type | ----------------------| id | INTEGER | order_id | INTEGER | name | VARCHAR | quantity | INTEGER |
而这里的breif运行模式下来: 客户可以有多个订单,一个订单可以有很多项目 注意:您可能会争辩说,这些项目应该使用product_id引用某些产品表,但现在应该让它变得简单。
从我的数据库,我想请教以下问题:
对于给定的客户,列出所有与香格里拉启动项目
我查询的版本是这样的:
SELECT * FROM items where name LIKE'La%'
这将返回所有客户以La开头的所有项目。我想要的是,我为具有标识为1的特定客户获取所有项目。如何编写此类查询?我的第二个版本是这样的:
SELECT * FROM items WHERE name LIKE'La%'AND order_id in(SELECT id FROM orders WHERE customer_id = 1);
但是,他们是否有任何其他高效/优雅或更好的方法来做同样的事情?
我也是在写这相同的答案的中间,所以我第二并给予好评。 – 2009-02-21 10:34:40
哇,你超越了:) – 2009-02-21 10:36:50