Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL;获取所有卡片&;在一个请求中与每张卡关联的所有组_Mysql_Join_Group Concat - Fatal编程技术网

MySQL;获取所有卡片&;在一个请求中与每张卡关联的所有组

MySQL;获取所有卡片&;在一个请求中与每张卡关联的所有组,mysql,join,group-concat,Mysql,Join,Group Concat,我希望能够看到每张牌组中有一张牌,并显示如下。 一张牌可以有多张牌组。将会有很多卡片/套牌。 服务器是用php编写的 |List of cards| In decks | |-------------|-------------------| |CardA |DeckA, DeckC | |CardB |DeckC, DeckF, DeckY| |CardC | | 数据库如下所示: C

我希望能够看到每张牌组中有一张牌,并显示如下。 一张牌可以有多张牌组。将会有很多卡片/套牌。 服务器是用php编写的

|List of cards|   In decks        |
|-------------|-------------------|
|CardA        |DeckA, DeckC       |
|CardB        |DeckC, DeckF, DeckY|
|CardC        |                   |
数据库如下所示:

CREATE TABLE `card` (
  `id` INT PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(100) NOT NULL
);

CREATE TABLE `deck` (
  `id` INT PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(100) NOT NULL
);
CREATE TABLE `deck_card` (
  `deck_id` INT NOT NULL ,
  `card_id` INT NOT NULL ,
  PRIMARY KEY (deck_id, card_id),
  FOREIGN KEY (card_id) REFERENCES card(id),
  FOREIGN KEY (deck_id) REFERENCES deck(id)
);
我想避免对每张卡都进行请求。
是否有一种方法可以使用MySQL在一个请求中请求所有卡片和每个关联的卡片组?

下一个简单的查询可以解决您的问题:

SELECT 
    `c`.`name` `card_name`,
    COALESCE(GROUP_CONCAT(`d`.`name`),'') `deck_names`
FROM `card` `c`
LEFT JOIN `deck_card` `dc` ON `c`.`id` = `dc`.`card_id`
LEFT JOIN `deck` `d` ON `d`.`id` = `dc`.`deck_id`
GROUP BY `c`.`name`
;


您对数据库的api调用可以返回您需要的任何内容。。。。除了此数据结构之外,您还有其他代码要显示吗?请使用join+group\u concatthanks FelippeDuarte它可以工作:)
+===========+=============+
| card_name | deck_names  |
+===========+=============+
| CardA     | DeckA,DeckB |
+-----------+-------------+
| CardB     | DeckC,DeckE |
+-----------+-------------+
| CardC     |             |
+-----------+-------------+