Позвольте мне попытаться объяснить, что я пытаюсь сделать. Во-первых, у меня есть база данных или предметы, которые огромны, 50 тыс. И более, ежедневно растет. Мне нужно извлечь информацию из этой базы данных на основе того, чего у нее нет. (Я использую SQL; Psql или MySql не имеет значения.)выберите из этого, который не содержит информации
Так выглядит база данных, как это (примерно)
SELECT * FROM my_table
+---------+--------+ | ITEM | TYPE | +---------+--------+ | 12EU | P | | 12EU | R | | 12EU | T | | 34RE | P | | 34RE | R | | 34RE | T | | 54TR | R | | 54TR | T | +---------+--------+
Не все элементы имеют "P", но все они имеют «T» и «R.» Мне нужно вытащить ПУНКТ, у которого нет ТИПА «Р», для меня это не имеет значения.
В этом примере я бы хотел ITEM «54TR», потому что у него нет ТИПА «P.»
Надеюсь, это поможет лучше объяснить то, что я пытаюсь сделать.
Пример того, что я сделал:
SELECT distinct ITEM
FROM (SELECT distinct ITEM FROM my_table WHERE TYPE='P') q
WHERE TYPE!='P'
AND ITEM != q.ITEM
ORDER BY ITEM
Это не работает, она по-прежнему возвращает другие типы, не правильный путь ...
Это всегда хорошая идея, чтобы действительно опубликовать желаемый результат, установленный в дополнение к исходным данным. И часто полезно назвать СУБД. –
У 54TR есть P, 34RU и 34RE нет P, это правильно? – Gar
Нет 54TR не имеет P, другие делают. Использование! = 'P' в предложении where возвращает все элементы, у которых нет P, но это много информации. Мне нужны предметы, у которых нет P вообще. – Demas