Email or username:

Password:

Forgot your password?
Umnik

Помогите составить SQL запрос. Пример не связан с реальной задачей, но связь описывает. Так что если говорю, что фамилия уникальна - будем считать, что так и есть

Таблицы:

- Граждане:
-- фамилия (считаем, что уникальная): праймери кей, нон нал, стринг
-- национальность стринг, нон нал
-- дата рождения дейттайм, нон нал

- Здоровье:
-- Фамилия: фориджен кей граждане.фамилия, праймери кей
-- рост инт, нон нал
-- вес инт, нон нал
-- привит бул, нон нал

- Чиновники
-- фамилия: фориджен кей граждане.фамилия, праймери кей
-- отдел стринг, нон нал
-- внутренний телефон инт, нон нал
-- засекречен бул, нон нал

В общем, суть проста. Важно, что чиновники всегда граждане, но не каждый гражданин - чиновник.

Дай мне фамилию, национальность, дату рождения, рост, вес, прививку, отдел, внутренний телефон по фамилии лайк ИВАН%

Так, чтобы если это НЕ чиновник, то не хватающие поля - NULL. А если чиновник, то важно, чтобы был не засекречен. То есть засекреченных в выборке быть не должно.

БД - SQLite, но это пока отладка. В будущем будет Мария или Мускул

Я спотыкаюсь на, собственно, джойне. Типа JOIN чиновники. Потому что ОН чиновники.фамилия = граждане.фамилия, ведь чиновника такого может и не быть.

У меня два джойна, но сути не меняет, я думаю. Просто таблиц больше

3 comments
Kirill Zholnay

@umnik Нейронка хорошо SQL знает. Трепал её?

Alexey Skobkin

@umnik
Ну ты если сделаешь от граждан к чиновникам LEFT JOIN, то при отсутствии полей они будут NULL. А если ты потом в конце в WHERE отфильтруешь по Чиновники.засекречен <> TRUE - это же решает проблему, не?

P.S. "фориджен кей" запомню 🤔

κρ🦥μγ

@umnik слева приджойни чиновника и в условиях ON сделай НЕ засекретный

Go Up