2011-03-29 162 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 

邊注:我不建議使用大寫字符數據庫表和列名。