Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpDpJn 229 of 280 menu
◀ ▶

Практика на две таблицы в Go

В этих задачах потренируем сборку строк из двух таблиц. Таблицы заданы текстом создания и вставки.

Даны таблицы:

CREATE TABLE authors ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ); CREATE TABLE articles ( id INTEGER PRIMARY KEY, author_id INTEGER NOT NULL, title TEXT NOT NULL, FOREIGN KEY (author_id) REFERENCES authors (id) ); INSERT INTO authors (name) VALUES ('ann'); INSERT INTO authors (name) VALUES ('bob'); INSERT INTO articles (author_id, title) VALUES (1, 'sql tips'); INSERT INTO articles (author_id, title) VALUES (1, 'go fmt');

Выведите имя автора и заголовок каждой статьи в одной строке результата, связав таблицы по номеру автора.

Даны таблицы:

CREATE TABLE authors ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ); CREATE TABLE articles ( id INTEGER PRIMARY KEY, author_id INTEGER NOT NULL, title TEXT NOT NULL, FOREIGN KEY (author_id) REFERENCES authors (id) ); INSERT INTO authors (name) VALUES ('ann'); INSERT INTO authors (name) VALUES ('bob'); INSERT INTO articles (author_id, title) VALUES (1, 'sql tips');

Выведите всех авторов. Для "bob" покажите "no article", если статьи нет. Оставь строку слева, даже если справа пусто. Название справа читайте в sql.NullString.

Даны таблицы:

CREATE TABLE rooms ( id INTEGER PRIMARY KEY, code TEXT NOT NULL ); CREATE TABLE devices ( id INTEGER PRIMARY KEY, room_id INTEGER NOT NULL, label TEXT NOT NULL, FOREIGN KEY (room_id) REFERENCES rooms (id) ); INSERT INTO rooms (code) VALUES ('a1'); INSERT INTO rooms (code) VALUES ('b2'); INSERT INTO devices (room_id, label) VALUES (1, 'lamp'); INSERT INTO devices (room_id, label) VALUES (1, 'sensor'); INSERT INTO devices (room_id, label) VALUES (2, 'fan');

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

Даны таблицы:

CREATE TABLE pilots ( id INTEGER PRIMARY KEY, callsign TEXT NOT NULL ); CREATE TABLE flights ( id INTEGER PRIMARY KEY, pilot_id INTEGER NOT NULL, route TEXT NOT NULL, miles INTEGER NOT NULL, FOREIGN KEY (pilot_id) REFERENCES pilots (id) ); INSERT INTO pilots (callsign) VALUES ('red'); INSERT INTO pilots (callsign) VALUES ('blue'); INSERT INTO flights (pilot_id, route, miles) VALUES (1, 'north', 120); INSERT INTO flights (pilot_id, route, miles) VALUES (1, 'west', 80); INSERT INTO flights (pilot_id, route, miles) VALUES (2, 'east', 200);

Для каждого позывного выведите сумму miles по его рейсам после сборки строк из двух таблиц.

Даны таблицы:

CREATE TABLE clients ( id INTEGER PRIMARY KEY, email TEXT NOT NULL ); CREATE TABLE tickets ( id INTEGER PRIMARY KEY, client_id INTEGER NOT NULL, subject TEXT NOT NULL, FOREIGN KEY (client_id) REFERENCES clients (id) ); INSERT INTO clients (email) VALUES ('a@test'); INSERT INTO clients (email) VALUES ('b@test'); INSERT INTO tickets (client_id, subject) VALUES (1, 'login'); INSERT INTO tickets (client_id, subject) VALUES (2, 'pay'); INSERT INTO tickets (client_id, subject) VALUES (2, 'ship');

Выведите email и число заявок для каждого клиента через группировку после связи таблиц.

Даны таблицы:

CREATE TABLE stores ( id INTEGER PRIMARY KEY, city TEXT NOT NULL ); CREATE TABLE staff ( id INTEGER PRIMARY KEY, store_id INTEGER NOT NULL, name TEXT NOT NULL, FOREIGN KEY (store_id) REFERENCES stores (id) ); INSERT INTO stores (city) VALUES ('oslo'); INSERT INTO stores (city) VALUES ('bergen'); INSERT INTO staff (store_id, name) VALUES (1, 'ann'); INSERT INTO staff (store_id, name) VALUES (1, 'kim');

Выведите город и имя сотрудника для каждой пары. Строки без сотрудника справа не нужны.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить