2011-03-29 88 views
0

在MySQL中我有两个表,说CustomersOrders,看起来像这样:MySQL的搜索基于搜索

[Customers] 
'ID' 'Name' 'Phone_nr' 
1  Ted  12345 
2  Anna  54321 
3  Anna  98765 

[Orders] 
'ID' 'Customer_ID' 'Price' 
1  2    100 
2  2    50 
3  1    70 
4  2    120 
5  3    80 

现在我想搜索订单ID,其中“Customers.Name =安娜和价格> 60 ......我希望我这样做:

SELECT 'ID' FROM 'Orders' WHERE 'Customer_ID' = (SELECT 'ID' FROM 'Customers' WHERE 'Name' = 'Anna') AND 'Price' > 60 

我想这是基于ID号缶返回订单ID 1,4和5

因此,基本上,做一个搜索nd在另一个表中搜索...

这可能会在大型表上完成,可能有1k个结果“Anna”,我也可以使用其他方式来构建表,特别是如果它需要更少的服务器,但我仍然有一个表中的项目链接到其他表中的项目,我需要过滤两个。

希望我是清楚这一点,并感谢您的时间。

回答

1
SELECT o.id 
FROM orders o, customers c 
WHERE o.Customer_ID = c.ID AND 
     o.Price > 60   AND 
     c.Name = 'Anna'; 
+0

谢谢,这正是我需要的,使用和扩展都很简单。 – 2011-03-29 13:15:47

3
SELECT Orders.Id 
FROM Orders 
INNER JOIN Customers ON Customers.Id = Orders.Customer_ID 
WHERE Customers.'Name' = 'Anna' AND Orders.'Price' > 60 
+0

谢谢,它的工作原理,但我会用@ syrion的答案去,它只是似乎我的情况好,对不起。 – 2011-03-29 13:17:29

0
SELECT ID FROM Orders o 
JOIN Customers c ON c.ID = o.Customer_ID 
WHERE c.Name = 'Anna' AND Price > 60 

边注:我不建议使用大写字符数据库表和列名。