Не знаю, как GROUP_BY мои данные - PullRequest
0 голосов
/ 03 июля 2018

Вот описание моих таблиц

describe book;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| isbn           | varchar(20) | NO   | PRI | NULL    |       |
| title          | varchar(30) | YES  |     | NULL    |       |
| date_published | date        | YES  |     | NULL    |       |
| publisher_id   | int(11)     | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+

describe author;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| author_id  | int(11)     | NO   | PRI | NULL    |       |
| first_name | varchar(20) | YES  |     | NULL    |       |
| last_name  | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

describe stored_on;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| isbn         | varchar(20) | YES  |     | NULL    |       |
| total_copies | int(11)     | YES  |     | NULL    |       |
| shelf_number | int(11)     | YES  |     | NULL    |       |
| library      | varchar(20) | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+

describe written_by;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| isbn      | varchar(20) | YES  | MUL | NULL    |       |
| author_id | int(11)     | YES  | MUL | NULL    |       |
+-----------+-------------+------+-----+---------+-------+

Я пытаюсь отобразить название книги, список авторов, написавших эту книгу, номер полки, общее количество копий и библиотеку, в которой находится книга.

SELECT 
    b.title, 
    GROUP_CONCAT(CONCAT_WS(' ',a.first_name, a.last_name )) AS authors,
    so.shelf_number,
    so.total_copies,
    so.library
FROM 
    stored_on so 
LEFT OUTER JOIN book b ON so.isbn = b.isbn
LEFT OUTER JOIN written_by wb ON wb.isbn = so.isbn
LEFT OUTER JOIN author a ON wb.author_id = a.author_id
GROUP BY (b.title);

Я не знаю, как сгруппировать мои данные в конце так, чтобы получить дублирующиеся заголовки / исбн.

Пример: в одной библиотеке есть книга, а в другой - такая же книга, я хочу распечатать данные для каждой из них. Все они перечислены в моей сохраненной таблице для начала, и я могу распечатать все записи, когда я не использую GROUP_CONCAT, но я получаю двойные записи в поле authors.

Не могу понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...