2016-11-13 2 views
0

Извините, я не знаю, как сформулировать заголовок вопроса. У меня есть таблица, как этотЗапрос на поиск по запросу MySQL на основе другого столбца?

Prod  Part  Number 

0001  101  3 
0001  102  2 
0001  103  1 

0002  101  3 
0002  102  2 
0002  103  4 

0003  101  2 
0003  102  3 
0003  103  6 

0004  101  3 
0004  102  2 
0004  103  1 

Я хочу, чтобы найти продукт, который имеет правильный номер каждой части для всех частей. Так что-то вроде

SELECT Prod from table 
WHERE  (Number of Part(101)) = 3 
     AND (Number of Part(102)) = 2 
     AND (Number of Part(103)) = 1 

выход будет:

Prod 
0001 
0004 

Как я могу добиться этого?

+0

Пожалуйста, укажите желаемый результат на основе ваших данных образца. –

+0

@ PM77-1 обновлен – J13t0u

ответ

0

Вы можете использовать некоторые внутреннее соединение

select t1.Prod from 
    (select Prod 
    from my_table 
    where part = 101 
    and Number = 3) t1 
    inner join 
    (select Prod 
    from my_table 
    where part = 102 
    and Number = 2) t2 on t1.Prod = t2.Prod 
    inner join 
    (select Prod 
    from my_table 
    where part = 103 
    and Number = 1) t3 on t1.Prod = t3.Prod 

http://sqlfiddle.com/#!9/014fe4/8

+0

Спасибо за ответ, как мне получить только один столбец? http://sqlfiddle.com/#!9/014fe4/4 – J13t0u

+0

@ J13t0u ответ обновление .. надежда - это то, что вы ищете – scaisEdge

+0

Спасибо, но он очень медленный, когда он добирается до 10+. Я просто собираюсь использовать другую таблицу. – J13t0u

0

Через условной агрегации:

SELECT Prod, 
     SUM(CASE WHEN Part = 101 AND Number = 3 OR 
        Part = 102 AND Number = 2 OR 
        Part = 103 AND Number = 1 
      THEN 1 ELSE 0 END) sum 
FROM tbl 
GROUP BY Prod 
HAVING sum = 3 

Это даст вам дополнительный столбец. Если это проблема, тогда оберните все в другой SELECT.

+0

Пытался сделать это на sqlfiddle, похоже, не может заставить его работать. http://sqlfiddle.com/#!9/014fe4/5 – J13t0u

+0

Невозможно получить доступ к Fiddle на данный момент. Попробуй, когда я вернусь домой. –

+0

Исправлено: http://sqlfiddle.com/#!9/014fe4/13 –

Смежные вопросы