Есть таблица с колонками:
Namex и Nnumberx
Иванов 5
Иванов 6
Иванов 10
Петров 5
Петров 6
Сидоров 5
Комаров 6
Как видно имена и цифры могут повторяться.
Нужно выбрать все имена, у которых цифра = 5 и одновременно <> 10.
То есть в данном примере в ответе должны быть
Петров
Сидоров
Пожалуйста помогите или укажите направление куда копать )
Другие языки программирования и технологии
Помогите с SQL запросом
Условие поставлено некорректно, поэтому и не получается.
Как я понял:
Нужно выбрать все имена, с которыми есть записи с 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
Как я понял:
Нужно выбрать все имена, с которыми есть записи с 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
Мухиддин Матниязов
Вот спасибо добрый человек. Понял все именно так. Я еще не пробовал пример, но вижу, что именно то что нужно!
Мухиддин Матниязов
Еще раз спасибо! Переделав пример под свою задачу, я получил нужный результат, но как работает пример не понял. Нашел урок, рассказывающий про подобную ситуацию. Из него понял что такое Псевдонимы и сам подзапрос. Теперь работа примера полностью понятна.
= 5 и одновременно <> 10
Смысл второго условия? 5<>10 и никогда не будет равно.
SELECT ...FROM ...WHERE ...
Смысл второго условия? 5<>10 и никогда не будет равно.
SELECT ...FROM ...WHERE ...
Мухиддин Матниязов
Вероятно я не очень точно задал вопрос. Смысл проверить все строки таблицы. Чтобы в ответе были все у кого = 5, но из них нужно выкинуть все у кого есть строчки =10
копай в сторону sql
select Namex.Name from Namex, Nnumberx where Namex.id = Nnumberx.Namex_id and Nnumberx = 5
при условии, что таблицы связаны по id
select Namex.Name from Namex, Nnumberx where Namex.id = Nnumberx.Namex_id and Nnumberx = 5
при условии, что таблицы связаны по id
Мухиддин Матниязов
У меня действительно разные таблицы, и они связаны по id. Но в примере я указал только одну, чтобы не выливать кучу лишней инфы.
Из моего примера мне нужно выбрать все строки в которых цифра = 5 . Это просто, но одновременно должно быть условие что цифра не равна 10.
Из моего примера мне нужно выбрать все строки в которых цифра = 5 . Это просто, но одновременно должно быть условие что цифра не равна 10.
> цифра = 5 и одновременно <> 10.
10 - это не цифра.
Если "цифра = 5", то она уж НИКАК не может быть одновременно равной 10, хоть ты тресни)
10 - это не цифра.
Если "цифра = 5", то она уж НИКАК не может быть одновременно равной 10, хоть ты тресни)
Мухиддин Матниязов
Ну раскритиковали меня в хлам...
10 - это не цифра. Верно, ошибся, учту. Но уверен, что все поняли.
5 10. Тоже верно. Спорить тут глупо.
Наверное я действительно криво задал вопрос, но почитайте еще раз, уверен, что поймете смысл.
10 - это не цифра. Верно, ошибся, учту. Но уверен, что все поняли.
5 10. Тоже верно. Спорить тут глупо.
Наверное я действительно криво задал вопрос, но почитайте еще раз, уверен, что поймете смысл.
Поясните, что значит ваше "одновременно <> 10 "
Согласен с предыдущим оратором! :)
А вообще, это делается так:
SELECT * FROM table WHERE Nnumberx = 5
Получите ваших людей с пятеркой!
Согласен с предыдущим оратором! :)
А вообще, это делается так:
SELECT * FROM table WHERE Nnumberx = 5
Получите ваших людей с пятеркой!
Мухиддин Матниязов
Да, все верно, получу всех в пятеркой. Но в списке будут и те, у кого есть десятки. А вот этого мне и не нужно.
Кстати, у вас изначально неправильная таблица - в ней нельзя однозначно идентифицировать запись. Введите ключевое поле.
Мухиддин Матниязов
Да, наверное стоило бы его указать в примере. Хотя к вопросу ID и не имеет отношения. Пример конечно выдуман и очень упрошен. Федор дал интересующий меня ответ, а именно это условие с подзапросом (exists)
Его пример отлично работает, правда я его не совсем понял. Я новичок в скуле, с подзапросами еще не работал, и теперь надо немного почитать. Главное что есть рабочий пример, и его удалось изогнуть до своих потребностей. Дальше разберусь.
Его пример отлично работает, правда я его не совсем понял. Я новичок в скуле, с подзапросами еще не работал, и теперь надо немного почитать. Главное что есть рабочий пример, и его удалось изогнуть до своих потребностей. Дальше разберусь.
SELECT FROM WHERE .. далее давайте сами, подскажу лишь, откуда и что
Мухиддин Матниязов
поверь, SELECT FROM WHERE я уже вкурил )
В ответе правильные:
Иванов 5
Петров 5
Сидоров 5
Иванов 5
Петров 5
Сидоров 5
Мухиддин Матниязов
Нет, по замыслу не так. В третьей строке у Иванова есть 10, следовательно он не должен попасть в ответ. В этом и смысл вопроса.
Похожие вопросы
- Перечень допустимых функций в SQL-запросе ADO Jet 4.0 (MS Access)
- sql запрос как сделать предложение? Как написать девушке предложение выйти замуж с помощью SQL-запроса?
- SQL запрос в Acces
- В Delphi не работает SQL запрос.
- SQL запросы к внешним ключам
- Каким образом можно выполнить несколько миллионов SQL запросов за 10 минут?
- Люди, знающие SQL, помогите сделать запрос.
- Быстродействие падает, система виснет после запроса к базе SQL +++
- Помогите создать запрос на SQL
- помогите создать запрос в SQL!