MySQL сборка 2 запросов в таблицу

269
26 декабря 2018, 09:40

Есть потребность в создание запроса который возвращал бы таблицу с полями

id_books | name_book | index_udc | index_bbk | autor | genre | проблема в том, что у книги могут быть несколько авторов и разные жанры, а это связь многие-к-многим.

Я составил запросы отдельно для запроса авторов, и жанров, но я в замешательстве как их объединить в одну таблицу.

select  `librarydb`.`books`.*,
        group_concat(`librarydb`.`autor`.autor_record)
from `librarydb`.`books`
join `librarydb`.`autor_join_table`
  on `librarydb`.`autor_join_table`.id_books
  =  `librarydb`.`books`.id_books
join `librarydb`.`autor`
  on `librarydb`.`autor`.id_autor
  =  `librarydb`.`autor_join_table`.id_autor
group by `librarydb`.`books`.id_books

select  `librarydb`.`books`.*,
        group_concat(`librarydb`.`genre`.genre_record)
from `librarydb`.`books`
join `librarydb`.`genre_join_table`
  on `librarydb`.`genre_join_table`.id_books
  =  `librarydb`.`books`.id_books
join `librarydb`.`genre`
  on `librarydb`.`genre`.id_genre
  =  `librarydb`.`genre_join_table`.id_genre
group by `librarydb`.`books`.id_books;  

База данных

CREATE DATABASE librarydb;
USE librarydb;
CREATE TABLE `librarydb`.`autor` (
    `id_autor`      int(11) NOT NULL AUTO_INCREMENT,
    `autor_record`  varchar(256) NOT NULL, 
    PRIMARY KEY (`id_autor`)
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`autor` VALUES 
 (1, 'Arkady Natragovich Strugatsky')
,(2, 'Boris Natragovich Strugatsky')
,(3, 'Andrzej Sapkowski');
-- Autor join table
CREATE TABLE `librarydb`.`autor_join_table` (
    `id_books`  int(11) NOT NULL,
    `id_autor`  int(11) NOT NULL     
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`autor_join_table` VALUES
    (1, 1),
    (1, 2),
    (2, 3);
CREATE TABLE `librarydb`.`genre` (
    `id_genre`      int(11) NOT NULL AUTO_INCREMENT,
    `genre_record`  varchar(256) NOT NULL, 
    PRIMARY KEY (`id_genre`)
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`genre` VALUES
 (1, 'fantasy'),
 (2, 'Science fiction');
-- Genre join table
CREATE TABLE `librarydb`.`genre_join_table` (
    `id_books`  int(11) NOT NULL,
    `id_genre`  int(11) NOT NULL     
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`genre_join_table` VALUES
     (1, 1),
     (1, 2),
     (2, 1);
CREATE TABLE `librarydb`.`bbk` (
    `id_bbk`        int(11) NOT NULL AUTO_INCREMENT,
    `bbk_record`    varchar(256) NOT NULL,
    PRIMARY KEY (`id_bbk`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`bbk` VALUES
 (1, 'bbk-abc123'),
 (2, 'bbk-cba321');
CREATE TABLE `librarydb`.`udc` (
    `id_udc`        int(11) NOT NULL AUTO_INCREMENT,
    `udc_record`    varchar(256) NOT NULL,
    PRIMARY KEY (`id_udc`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`udc` VALUES
 (1, 'udc-abc123'),
 (2, 'udc-cba321');
CREATE TABLE `librarydb`.`books` (
    `id_books`      int(11) NOT NULL AUTO_INCREMENT,
    `name_book`     varchar(256) DEFAULT NULL,
--  `autor`         int(11) DEFAULT NULL,
--  `genre`         int(11) DEFAULT NULL,  
    `index_udc`     int(11) DEFAULT NULL,
    `index_bbk`     int(11) DEFAULT NULL,
    PRIMARY KEY (`id_books`),
    FOREIGN KEY (index_udc) REFERENCES udc(id_udc),
    FOREIGN KEY (index_bbk) REFERENCES bbk(id_bbk)
) ENGINE=InnoDB DEFAULT CHARSET=utf32;
INSERT INTO `librarydb`.`books` VALUES
(1, 'STALKER', 1, 1),
(2, 'WITCHER', 2, 2);
Answer 1

select    `librarydb`.`books`.*,
group_concat(DISTINCT `librarydb`.`autor`.autor_record),
group_concat(DISTINCT `librarydb`.`genre`.genre_record)
from `librarydb`.`books`
join `librarydb`.`autor_join_table`
  on `librarydb`.`autor_join_table`.id_books
  =  `librarydb`.`books`.id_books
join `librarydb`.`autor`
  on `librarydb`.`autor`.id_autor
  =  `librarydb`.`autor_join_table`.id_autor       
join `librarydb`.`genre_join_table`
  on `librarydb`.`genre_join_table`.id_books
  =  `librarydb`.`books`.id_books
join `librarydb`.`genre`
  on `librarydb`.`genre`.id_genre
  =  `librarydb`.`genre_join_table`.id_genre
group by `librarydb`.`books`.id_books;
READ ALSO
position sticky Safari

position sticky Safari

При наличии обычного div и при position: -webkit-sticky; все отлично на сафари работает, но когда div кидается в div ничего не работает, прошу помощи

214
Как поставить label над input

Как поставить label над input

Привет всем возникла задача поставить лейбы над инпутами

197