MySQL поиск на основе поиска - PullRequest
0 голосов
/ 29 марта 2011

В MySQL у меня есть две таблицы, скажем Customers и Orders, выглядящие так:

[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

Теперь я хочу найти идентификатор заказа, где «Customers.Name = Anna» и цена> 60 ... Я надеялся, что я сделаю что-то вроде:

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

Я хочу, чтобы это возвращало идентификаторы заказов 1, 4 и 5.

Итак, по сути, сделайте поиск по идентификаторучисла, найденные при поиске в другой таблице ...

Это, вероятно, будет сделано для больших таблиц с результатами, возможно, 1к для "Анны", я также был бы открыт для других способов структурирования таблиц, особенно еслидля этого требуется меньше сервера, но у меня все еще есть элементы в одной таблице, которые связаны с элементами в другой таблице, и мне нужно отфильтровать оба.

Надеюсь, мне все ясно, и спасибо заваше время.

Ответы [ 3 ]

3 голосов
/ 29 марта 2011
SELECT Orders.Id
FROM Orders
INNER JOIN Customers ON Customers.Id = Orders.Customer_ID
WHERE Customers.'Name' = 'Anna' AND Orders.'Price' > 60
1 голос
/ 29 марта 2011
SELECT o.id 
FROM   orders o, customers c 
WHERE  o.Customer_ID = c.ID AND 
       o.Price > 60         AND
       c.Name = 'Anna';
0 голосов
/ 29 марта 2011
SELECT ID FROM Orders o
JOIN Customers c ON c.ID = o.Customer_ID
WHERE c.Name = 'Anna' AND Price > 60

Примечание: я бы не рекомендовал использовать заглавные буквы в именах таблиц и столбцов базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...