Не получается соединить SQL таблицы с помощью JOIN

Есть 3 таблицы:

  1. Авторы - ключевое поле "№ автора"
  2. Издательства - ключевое поле "№ издательства"
  3. Книги - внешние ключи "Номер автора" и "Номер издательства"

Нужно вывести все данные из всех таблиц, объединив их в одну, с учетом того, что в таблице могут быть значения NULL.

ЗАПРОС СОЗДАНИЯ ТАБЛИЦ:

create database if not exists `unlib`;
use `unlib`;

CREATE TABLE `Издательства` (
    `№ издательства` INT(3) UNSIGNED NOT NULL PRIMARY KEY,
    `Название издательства` VARCHAR(50) NOT NULL,
    `Город` VARCHAR(30) NOT NULL
);

CREATE TABLE `Авторы` (
    `№ автора` INT(4) UNSIGNED NOT NULL PRIMARY KEY,
    `ФИО автора` VARCHAR(40) NOT NULL
);

CREATE TABLE `Книги` (
    `ISBN` VARCHAR(15) NOT NULL PRIMARY KEY,
    `Название` VARCHAR(40) NOT NULL,
    `Номер автора` INT(4) UNSIGNED NOT NULL,
    `Номер издательства` INT(3) UNSIGNED NOT NULL,
    `Год издания` INT(4) UNSIGNED NOT NULL,
    `Цена` INT(4) UNSIGNED NOT NULL,
    FOREIGN KEY (`Номер автора`)
        REFERENCES `Авторы` (`№ автора`) on update cascade on delete no action,
    FOREIGN KEY (`Номер издательства`)
        REFERENCES `Издательства` (`№ издательства`) on update cascade on delete no action
);

ЗАПРОС ЗАПОЛНЕНИЯ И ВЫБОРКИ ДАННЫХ:

use `unlib`;

insert into `авторы` (`№ автора`,`ФИО автора`) values
    (1001,'Иванов Сергей Степанович'),
    (1002,'Сидорова Ольга Юрьевна'),
    (1003,'Петров Иван Петрович'),
    (1004,'Цукерман Игорь Львович');

insert into `издательства` (`№ издательства`,`Название издательства`,`Город`) values
    (101,'Питер','Петербург'),
    (102,'Лори','Москва'),
    (103,'БХВ-Петербург','Петербург'),
    (104,'Фортуна Плюс','Самара');
    
insert into `книги` (`ISBN`,`Название`,`Номер автора`,`Номер издательства`,`Год издания`,`Цена`) values
    ('978-5-388-00003','СамоучительJAVA',1001,101,2012,300),
    ('978-5-699-58103','JAVAза 21 день',1001,102,2013,600),
    ('758-3-004-87105','Сопромат',1002,103,2013,350),
    ('758-3-057-37854','Механика',1003,103,2011,780),
    ('675-3-423-00375','Физика',1002,102,2012,450);
    
    
SELECT 
    `ISBN`,
    `№ автора`,
    `ФИО автора`,
    `Название`,
    `№ издательства`,
    `Название издательства`,
    `Город`,
    `Год издания`,
    `Цена`
FROM
    `книги`
        RIGHT JOIN
    `авторы` ON `книги`.`Номер автора` = `авторы`.`№ автора`
        RIGHT JOIN
    `издательства` ON `книги`.`Номер издательства` = `издательства`.`№ издательства`;

Итоговая таблица должна выглядеть следующим образом:

Исходная таблица

При выполнении запросы выводится следующая таблица:

Таблица выполнения запроса

В конце есть строка, в которой указано издательство. После нее должна быть еще одна строка с именем "Цукерман Игорь Львович", но ее нет.

Почему так происходит?

Заранее большое спасибо за ответ.


Ответы (0 шт):