Как написать запрос, как этот табличный конструктор? - PullRequest
0 голосов
/ 25 апреля 2020

collection_info

+------------+--------------+
| id         | bigint(20)   |
+------------+--------------+
| name       | varchar(255) |
+------------+--------------+
| is_private | tinyint(4)   |
+------------+--------------+
| heart      | bigint(20)   |
+------------+--------------+
| created_at | datetime     |
+------------+--------------+
| updated_at | datetime     |
+------------+--------------+
| user_name  | varchar(255) |
+------------+--------------+

collection_game

+--------------------+--------------+
| game_slug          | varchar(255) |
+--------------------+--------------+
| collection_info_id | bigint(20)   |
+--------------------+--------------+
| created_at         | datetime     |
+--------------------+--------------+

game

+-----------+--------------+
| id        | bigint(20)   |
+-----------+--------------+
| name      | varchar(255) |
+-----------+--------------+
| slug      | varchar(255) |
+-----------+--------------+
| image     | varchar(255) |
+-----------+--------------+
| genre     | varchar(100) |
+-----------+--------------+
| publisher | varchar(255) |
+-----------+--------------+

[collection_info] 1: N [collection_game] N: 1 [game]

О collection_info на основе collection_info и

Я хотел бы вывести три изображения из игры и распечатать их в одну строку, используя разделитель '' в столбце изображений.

Пример, подобный следующему:

+------------+------------+-------+-------------------------------------+
| name       | is_private | heart | image                               |
+============+============+=======+=====================================+
| info-name1 | 1          | 2     | game-image1,game-image2,game-image3 |
+------------+------------+-------+-------------------------------------+
| info-name2 | 0          | 4     | game-image1,game-image2,game-image3 |
+------------+------------+-------+-------------------------------------+
| info-name3 | 0          | 6     | game-image1,game-image2,game-image3 |
+------------+------------+-------+-------------------------------------+

Как мне заполнить запрос?

1 Ответ

0 голосов
/ 25 апреля 2020

Попробуйте следующее. Возможно, вам потребуется изменить данные, так как не было примеров данных, поэтому у вас не было возможности проверить их.

select
    ci.id,
    is_private,
    heart,
    group_concat(image, ', ') as image
from collection_info ci

join collection_game cg
on ci.id = cg.collection_info_id

join game g
on cg.game_slug = g.slug

where image in ('game-image1' ,'game-image2' ,' game-image3')

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