2014-11-17 2 views
0

На самом деле мой вопрос почти такой же: MySQL: Select multiple rows containing values from one column, я хочу найти car_id автомобилей, у которых есть MAKE = 'FORD' AND COLOR = 'SILVER', поэтому в этом случае здесь будет возвращает car_id 1 и 2.Выберите несколько строк, содержащих значения из одной колонки

PS: Там может быть несколько критериев сразу, как я могу искать по MAKE + девясил + ЦВЕТ, СДЕЛАЙТЕ + девясил, и т.д.

table_cars 

+----+--------+----------+-----------+ 
| id | car_id | name  | value  | 
+----+--------+----------+-----------+ 
| 1 | 1  | MAKE  | FORD  | 
| 2 | 1  | CARLINE | FIESTA | 
| 3 | 1  | COLOR | SILVER | 
| 4 | 1  | TOPSPEED | 210KM/H | 
| 5 | 2  | MAKE  | FORD  | 
| 6 | 2  | CARLINE | FOCUS  | 
| 7 | 2  | COLOR | SILVER | 
| 8 | 2  | TOPSPEED | 200KM/H | 
| 9 | 3  | MAKE  | HOLDEN | 
| 10 | 3  | CARLINE | ASTRA  | 
| 11 | 3  | COLOR | WHITE  | 
| 12 | 3  | TOPSPEED | 212KM/H | 
+----+--------+----------+-----------+ 

Спасибо!

+0

возможно дубликат [MySQL: Выберите несколько строк, содержащих значения из одного столбца] (http://stackoverflow.com/questions/3818004/mysql- select-multiple-rows-contains-values-from-one-column) – jpw

+0

Есть ли что-то другое между вашим вопросом и тем, с которым вы связаны, и я обозначен как дубликат? – jpw

+0

Это плохая модель базы данных, потому что она не моделирует автомобиль. Автомобиль приписывается как бренд, цвет, скорость и т. Д. В вашем столе есть несколько «вещей» имени и значения. Почему вы вообще называете свой стол table_cars? Назовите это table_something и ваш car_id something_id, и вы можете использовать его для своей коллекции DVD и вашей прачечной. –

ответ

0
select car_id 
from your_table 
group by car_id 
having sum(name = 'MAKE' and value = 'FORD') > 0 
and sum(name = 'COLOR' and value = 'SILVER') > 0 
+0

Строки должны быть в верхнем регистре. –

+0

Только если используется сортировка с учетом регистра. –

+0

А, хорошо, что-то особенное в MySQL. Я этого не знал. –

0

Try с автообъединение, как показано ниже:

SELECT distinct car_id 
FROM mytable mt1 INNER JOIN mytable mt2 
ON mt1.car_id = mt2.car_id 
WHERE mt1.name = 'MAKE' 
AND mt1.value = 'FORD' 
AND mt2.name = 'COLOR' 
AND mt2.value = 'SILVER' 
Смежные вопросы