Написание простого запроса для чайника

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
ya_yanchik-2909
Сообщения: 2
Зарегистрирован: 24 ноя 2016, 11:05

11 май 2017, 06:52

Здравствуйте! Только приступила к работе по изучению SQL.
Нужно создать такой запрос -
--- Если в таблице ReasonSuspensionOfProceedings в столбце Name поле заполнено как "С розыском", то значит столбец Мера из другой таблицы CoerciveMeasureKind и столбец Мера из таблицы PreventivePunishmentKind не должны быть пустыми. Т.е. на экран нужно вывести цельную таблицу, в которой будет указано, где именно содержатся пустые значения.
Я пока что написала как могла, на начальном уровне. Подскажите пожалуйста в каком направлении двигаться.

select *
from "ReasonSuspensionOfProceedings"
where "Name" ='В связи с розыском"

select *
from "CoerciveMeasureKind"
where "Name" = NULL

select *
from "PreventivePunishmentKind"
where "Name" = NULL

РАБОТАЮ на IBExpert
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

11 май 2017, 10:38

ya_yanchik-2909 писал(а):РАБОТАЮ на IBExpert
Это не важно. SQL стандартизирован и все простые запросы реализуются одинаково.

Двигаться надо в направлении объединения (JOIN) двух таблиц в запросе по паре первичный ключ (primary key) -> внешний ключ (foreign key)

В исходном вопросе не хватает информации по ключам в таблицах, поэтому помочь невозможно. Примерный запрос будет таким

Код: Выделить всё

 
select 
p.*, 
c.Name, 
p.Name
from 
"ReasonSuspensionOfProceedings" r,
 "CoerciveMeasureKind" c,
"PreventivePunishmentKind" p

where 
r."Name" ='В связи с розыском"
and r.mera_id = c.mera_id
and r.mera_id = p.mera_id
Но он выдаст как раз не пустые значения.

Если нужно вывести только пустые значения, то достаточно вашего первого запроса. Если нужно и те и другие, то нужно смотреть на OUTER JOIN
Даже самый дурацкий замысел можно воплотить мастерски
Ответить