powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать SQL-запрос для получения результирующего списка
11 сообщений из 11, страница 1 из 1
Как написать SQL-запрос для получения результирующего списка
    #40044256
Hito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста с решением задачи, уже почти сутки бьюсь, я с 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
Как написать SQL-запрос для получения результирующего списка
    #40044491
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тривиальный join

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

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


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

Таблица 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
Как написать SQL-запрос для получения результирующего списка
    #40044554
Hito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин всё равно всё съехало))
...
Рейтинг: 0 / 0
Как написать SQL-запрос для получения результирующего списка
    #40044555
Hito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ещё раз
...
Рейтинг: 0 / 0
Как написать SQL-запрос для получения результирующего списка
    #40044585
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так:

Код: 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
Как написать SQL-запрос для получения результирующего списка
    #40044589
Hito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное, это не совсем правильно, но на основе этого я доделал как положено!))
...
Рейтинг: 0 / 0
Как написать SQL-запрос для получения результирующего списка
    #40048577
VaRas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не актуально, но как вариант

Код: 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
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как написать SQL-запрос для получения результирующего списка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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