Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2022, 17:32   #1
Glowworm
Пользователь
 
Аватар для Glowworm
 
Регистрация: 26.10.2011
Сообщений: 67
По умолчанию Не работает select с join и условием

Доброго дня!

Подскажите, пожалуйста, почему не работает запрос? Всю голову сломал, но не могу понять в чем дело.
Таблицы используемые в запросе на картинке отображены.
Суть запроса, чтобы вывелись p_id, у которых p_code_type_id=100 и p_code_id=100 и code_type_id<>101 и p_code_id<>101

Пробовал запрос такой:

Код:
 
select p_id
from proj p
join code c on p.p_id=c.p_id and c.p_code_type_id=100 and c.p_code_id=100 and  c.p_code_type_id<>101 and c.p_code_id=101
Результат получаю: 1,2,3. Хотя ожидалось, что p_id =1 не будет выведен в результате запроса



Также пробовал так выполнять:
Код:
 
select p_id
from proj p
join code c on p.p_id=c.p_id and c.p_code_type_id=100 and c.p_code_id=100   
join code c1  on p.p_id=c1.p_id and c1.p_code_id<>101 and  c1.p_code_type_id<>101
Результат: 1,2,3. Тоже не исключается 1.



И вот так еще делал:
Код:

select p_id
from proj p
join code c on p.p_id=c.p_id
where c.p_code_type_id=100 and c.p_code_id=100  and c.p_code_id<>101 and  c.p_code_type_id<>101
Тоже не исключает p_id=1.

Подскажите, пожалуйста, что не так делаю?
Изображения
Тип файла: png таблицы.png (3.9 Кб, 11 просмотров)
Glowworm вне форума Ответить с цитированием
Старый 25.01.2022, 09:19   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,383
По умолчанию

Цитата:
Код:
 and  c.p_code_type_id<>101 and c.p_code_id<>101
означает всего лишь что не будет выведено соединение первой строки proj (p_id =1)
и четвертой строки code (p_code_id =101)
т.е. не будет второй строки с 1.

Код:
select p_id
from proj p
join ( select p_id, max(p_code_id) p_code_id from code group by p_id ) c on c.p_id =p.p_id and c.p_code_id =100
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает запрос:не могу объединить две таблицы join виталий1111 SQL, базы данных 2 10.09.2021 09:16
sql select с условием (where) в формате время Sherzod82 Microsoft Office Access 4 02.06.2016 08:25
Как работает inner join при неудовлетворении условия? DeveloPerchik БД в Delphi 2 14.04.2012 16:07
INNER JOIN в Delphi не работает. Droid БД в Delphi 2 03.07.2009 12:30