首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MySQL将GROUP_CONCAT结果视为单独的项

PHP MySQL将GROUP_CONCAT结果视为单独的项
EN

Stack Overflow用户
提问于 2015-03-25 00:00:48
回答 2查看 1.1K关注 0票数 0

我正在用PHP和MySQL制作一个音乐分类数据库。我有三张桌子:

歌:

代码语言:javascript
复制
ID  | Title
------------------------
1   | Example Song

体裁:

代码语言:javascript
复制
ID  | Name
------------------------
1   | Classical
2   | Instrumental

SongGenre

代码语言:javascript
复制
SongID | GenreID
----------------
1      | 1
1      | 2

我的问题是:

代码语言:javascript
复制
SELECT s.title, GROUP_CONCAT(DISTINCT g.name SEPARATOR ', ')
FROM song s    
LEFT JOIN songgenre sg ON s.id=sg.s_id
LEFT JOIN genre g ON sg.genreid = g.id

我使用GROUP_CONCAT来支持多种类型,如下所示:

标题:“歌例”:古典,器乐

我希望在PHP中为每一种类型生成一个链接,这样如果用户单击“经典”,他们就会被带到更多的经典歌曲中。问题是,我不知道如何让每一种类型都有自己的联系。GROUP_CONCAT的问题是,这两种类型都在同一行中一起返回,我不知道如何将行拆分为不同类型的链接。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-25 00:25:08

OP所要求的一个非常基本的示例

代码语言:javascript
复制
$var="Classical, Instrumental";

$each=explode(', ',$var);

foreach($each as $v){
echo '<a href="search.php?genre='.$v.'">'.$v.'</a>';
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-25 00:16:23

不要在数据库层中分组-将未分组(但已排序)记录集返回到PHP并从那里处理它:

代码语言:javascript
复制
$qry = $pdo->query('
  SELECT   sg.SongID, sg.GenreID, s.Title, g.Name
  FROM     song s
             LEFT JOIN songgenre sg ON s.ID = sg.SongID
             LEFT JOIN genre g ON sg.GenreID = g.ID
  ORDER BY sg.SongID, sg.GenreID
');

if ($qry) {
  echo '<ul class="songs">';

  $row = $qry->fetch();
  while ($row) {
    $current_song = $row['SongID'];

    echo '<li>'
       ,   '<span class="title">', htmlentities($row['Title']), '</span>'
       ,   '<ul class="genres">';
    do {
      echo   '<li>'
         ,     '<a href="genre.php?id=', intval($row['GenreID']), '">'
         ,       htmlentities($row['Name'])
         ,     '</a>'
         ,   '</li>';
    } while ($row = $qry->fetch() and $row['SongID'] == $current_song);

    echo   '</ul>'
       , '</li>';
  }

  echo '</ul>';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29245157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档