Не получается соединить SQL таблицы с помощью JOIN
Есть 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 `книги`.`Номер издательства` = `издательства`.`№ издательства`;
Итоговая таблица должна выглядеть следующим образом:
При выполнении запросы выводится следующая таблица:
В конце есть строка, в которой указано издательство. После нее должна быть еще одна строка с именем "Цукерман Игорь Львович", но ее нет.
Почему так происходит?
Заранее большое спасибо за ответ.

