Другие языки программирования и технологии

Помогите с SQL запросом

Есть таблица с колонками:
Namex и Nnumberx
Иванов 5
Иванов 6
Иванов 10
Петров 5
Петров 6
Сидоров 5
Комаров 6

Как видно имена и цифры могут повторяться.
Нужно выбрать все имена, у которых цифра = 5 и одновременно <> 10.
То есть в данном примере в ответе должны быть
Петров
Сидоров

Пожалуйста помогите или укажите направление куда копать )
Условие поставлено некорректно, поэтому и не получается.
Как я понял:
Нужно выбрать все имена, с которыми есть записи с Nnumberx=5 и нет записей с Nnumberx=10
Теперь то же самое, но по английски:
select distinct Namex from tableName T1 where Nnumberx=5 and not exists (select * from tableName T2 where Nnumberx=10 and T2 . Namex = T1 . Namex)
т. к. имя таблицы осталось неизвестным, я написал tableName
Нуржан Суртаев
Нуржан Суртаев
69 954
Лучший ответ
Мухиддин Матниязов Вот спасибо добрый человек. Понял все именно так. Я еще не пробовал пример, но вижу, что именно то что нужно!
Мухиддин Матниязов Еще раз спасибо! Переделав пример под свою задачу, я получил нужный результат, но как работает пример не понял. Нашел урок, рассказывающий про подобную ситуацию. Из него понял что такое Псевдонимы и сам подзапрос. Теперь работа примера полностью понятна.
= 5 и одновременно <> 10

Смысл второго условия? 5<>10 и никогда не будет равно.

SELECT ...FROM ...WHERE ...
Владимир Вова
Владимир Вова
49 555
Мухиддин Матниязов Вероятно я не очень точно задал вопрос. Смысл проверить все строки таблицы. Чтобы в ответе были все у кого = 5, но из них нужно выкинуть все у кого есть строчки =10
копай в сторону sql
select Namex.Name from Namex, Nnumberx where Namex.id = Nnumberx.Namex_id and Nnumberx = 5
при условии, что таблицы связаны по id
Kostya Ivchenko
Kostya Ivchenko
9 830
Мухиддин Матниязов У меня действительно разные таблицы, и они связаны по id. Но в примере я указал только одну, чтобы не выливать кучу лишней инфы.
Из моего примера мне нужно выбрать все строки в которых цифра = 5 . Это просто, но одновременно должно быть условие что цифра не равна 10.
> цифра = 5 и одновременно <> 10.

10 - это не цифра.

Если "цифра = 5", то она уж НИКАК не может быть одновременно равной 10, хоть ты тресни)
Мухиддин Матниязов Ну раскритиковали меня в хлам...
10 - это не цифра. Верно, ошибся, учту. Но уверен, что все поняли.
5 10. Тоже верно. Спорить тут глупо.
Наверное я действительно криво задал вопрос, но почитайте еще раз, уверен, что поймете смысл.
Поясните, что значит ваше "одновременно <> 10 "
Согласен с предыдущим оратором! :)
А вообще, это делается так:
SELECT * FROM table WHERE Nnumberx = 5
Получите ваших людей с пятеркой!
Мухиддин Матниязов Да, все верно, получу всех в пятеркой. Но в списке будут и те, у кого есть десятки. А вот этого мне и не нужно.
Кстати, у вас изначально неправильная таблица - в ней нельзя однозначно идентифицировать запись. Введите ключевое поле.
Мухиддин Матниязов Да, наверное стоило бы его указать в примере. Хотя к вопросу ID и не имеет отношения. Пример конечно выдуман и очень упрошен. Федор дал интересующий меня ответ, а именно это условие с подзапросом (exists)
Его пример отлично работает, правда я его не совсем понял. Я новичок в скуле, с подзапросами еще не работал, и теперь надо немного почитать. Главное что есть рабочий пример, и его удалось изогнуть до своих потребностей. Дальше разберусь.
SELECT FROM WHERE .. далее давайте сами, подскажу лишь, откуда и что
Мухиддин Матниязов поверь, SELECT FROM WHERE я уже вкурил )
В ответе правильные:
Иванов 5
Петров 5
Сидоров 5
Мухиддин Матниязов Нет, по замыслу не так. В третьей строке у Иванова есть 10, следовательно он не должен попасть в ответ. В этом и смысл вопроса.