SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Почему у двух запросов разный вывод (Я недавно в SQL и возник вопрос, почему один запрос выводит NULL позицию, а другой - нет?)
Почему у двух запросов разный вывод [сообщение #3910] Fri, 08 December 2023 17:09 Переход к следующему сообщению
LMouse в настоящее время не в онлайне  LMouse
Сообщений: 2
Зарегистрирован: December 2023
Junior Member
test=# SELECT students.name, exams.score FROM students, exams WHERE exams.s_id = students.s_id AND exams.c_no = 'CS305';
 name  | score
--------+-------
Анна   |     5
Виктор |     4
(2 строки)


test=# SELECT name, (SELECT score FROM exams WHERE exams.s_id = students.s_id AND exams.c_no = 'CS305') FROM students;
 name  | score
--------+-------
Анна   |     5
Виктор |     4
Нина   |
Re: Почему у двух запросов разный вывод [сообщение #3911 является ответом на сообщение #3910] Fri, 08 December 2023 17:10 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
потому что так сказано в условии задачи.
Re: Почему у двух запросов разный вывод [сообщение #3912 является ответом на сообщение #3911] Fri, 08 December 2023 17:11 Переход к предыдущему сообщениюПереход к следующему сообщению
LMouse в настоящее время не в онлайне  LMouse
Сообщений: 2
Зарегистрирован: December 2023
Junior Member
я имею ввиду, они же логически не отличаются, я запрашиваю и там и там 2 столбца, но подзапрос выводит NULL позицию, почему?
Re: Почему у двух запросов разный вывод [сообщение #3913 является ответом на сообщение #3912] Fri, 08 December 2023 17:13 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
отличаются.
Re: Почему у двух запросов разный вывод [сообщение #4020 является ответом на сообщение #3912] Wed, 10 January 2024 07:50 Переход к предыдущему сообщениюПереход к следующему сообщению
Квази в настоящее время не в онлайне  Квази
Сообщений: 33
Зарегистрирован: June 2022
Member
1-й запрос это объединение двух таблиц по условию exams.s_id = students.s_id (из обоих таблиц извлекаются записи связанные по этому критерию), 2-й это извлечение ВСЕХ записей из одной таблицы, к которым пристегиваются записи из другой ЕСЛИ они там есть.
Re: Почему у двух запросов разный вывод [сообщение #4429 является ответом на сообщение #3912] Mon, 12 February 2024 20:53 Переход к предыдущему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
1. Ты выводишь жесткое условие объединения: значения из таблицы1 должны совпадать с значениями из таблицы2. В таблице2 нет одного студента.

2. Ты выводишь кортезиан - произведение множеств из таблицы и подзапроса. Но фокус в том, что в подзапросе ты задал условие отображения значения score , связав его с первой таблицей. Вот для таблицы есть один студент, у кторого нет score - поэтому его и отобразило в запросе.
Предыдущая тема: Коррелирующий подзапрос
Следующая тема: Написать странный запрос с update
Переход к форуму:
  


Текущее время: Sun Dec 22 08:49:30 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00828 секунд