Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать SQL-запрос для получения результирующего списка / 11 сообщений из 11, страница 1 из 1
11.02.2021, 03:40
    #40044256
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Здравствуйте. Помогите пожалуйста с решением задачи, уже почти сутки бьюсь, я с SQL почти не работал, но очень нужно решение.

Задание:
Имеется список авторов (таблица A) и список книг (таблица B).

Таблица A:
Author Birthday
Иванов 01.01.1950
Петров 31.12.1960
Сидоров 05.05.1965
Синицын 01.01.1970

Таблица B:
Author Book
Воробьев Книга 4
Воробьев Книга 5
Воробьев Книга 6
Иванов Книга 1
Сидоров Книга 2
Сидоров Книга 3

Необходимо написать SQL-запрос для получения результирующего списка с полями Author, Birthday, Book. В списке должны присутствовать все авторы, которые встречаются и в таблице A и в таблице B, а также все имеющиеся сведения о них из таблиц A и B.

Результат запроса:
Author Birthday Book
Воробьев Книга 4
Воробьев Книга 5
Воробьев Книга 6
Иванов 01.01.1950 Книга 1
Петров 31.12.1960
Сидоров 05.05.1965 Книга 2
Сидоров 05.05.1965 Книга 3
Синицын 01.01.1970


Буду очень благодарен за помощь
...
Рейтинг: 0 / 0
11.02.2021, 16:03
    #40044491
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
тривиальный join

Код: plsql
1.
select * from A join B on A.Author = B.Author
...
Рейтинг: 0 / 0
11.02.2021, 17:56
    #40044546
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Результат получается не такой как в задании
...
Рейтинг: 0 / 0
11.02.2021, 17:58
    #40044547
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Я пробовал сделать вот так:

SELECT
table_b.author,
birthday,
book
FROM table_b
full JOIN table_a ON table_b.author=table_a.author


получилось что то близкое но не то
...
Рейтинг: 0 / 0
11.02.2021, 18:03
    #40044550
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Такой результат должен быть
...
Рейтинг: 0 / 0
11.02.2021, 18:07
    #40044552
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Выше я не чётко описал исходные данные
дублирую в более надлежащем виде

Таблица A:

Author Birthday
Иванов 01.01.1950
Петров 31.12.1960
Сидоров 05.05.1965
Синицын 01.01.1970

Таблица B:

Author Book
Воробьев Книга 4
Воробьев Книга 5
Воробьев Книга 6
Иванов Книга 1
Сидоров Книга 2
Сидоров Книга 3
...
Рейтинг: 0 / 0
11.02.2021, 18:08
    #40044554
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
блин всё равно всё съехало))
...
Рейтинг: 0 / 0
11.02.2021, 18:10
    #40044555
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
ещё раз
...
Рейтинг: 0 / 0
11.02.2021, 18:54
    #40044585
londinium
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
А так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
WITH AUTHORS (NAME,BIRTHDAY)AS
  (
    SELECT 'Иванов', '01.01.1950'
        UNION ALL 
SELECT'Петров' ,'31.12.1960'
       UNION ALL 
SELECT'Сидоров' ,'05.05.1965'
      UNION ALL 
SELECT'Синицын' ,'01.01.1970' 
  ),
  BOOKS(Author, Book) AS 
(
  SELECT 'Воробьев',' Книга 4'
     UNION ALL 
SELECT 'Воробьев', 'Книга 5'
     UNION ALL 
SELECT 'Воробьев', 'Книга 6'
    UNION ALL 
SELECT 'Иванов' ,'Книга 1'
   UNION ALL 
SELECT 'Сидоров' ,'Книга 2'
   UNION ALL 
SELECT 'Сидоров' ,'Книга 3' 
)
SELECT COALESCE(A.NAME,B.AUTHOR)AS AUTHOR ,COALESCE(CAST(A.BIRTHDAY AS VARCHAR(10)),'')AS BIRTHDAY,
  COALESCE(B.BOOK,'')AS BOOK 
  FROM AUTHORS A 
  FULL JOIN BOOKS B ON A.NAME=B.Author
...
Рейтинг: 0 / 0
11.02.2021, 19:11
    #40044589
Hito
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
Спасибо огромное, это не совсем правильно, но на основе этого я доделал как положено!))
...
Рейтинг: 0 / 0
25.02.2021, 01:03
    #40048577
VaRas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать SQL-запрос для получения результирующего списка
не актуально, но как вариант

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT *
From 
(
select distinct author
FROM
(
select Author 
from A 
union
select Author 
from B 
) as t) as authors
left join a
on authors.author = a.Author 
left join B 
on authors.author = b.Author 
order by authors.author;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать SQL-запрос для получения результирующего списка / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]