如何以这种方式构造mysql结果?

时间:2010-07-14 22:48:38

标签: php mysql

我正在尝试做的是我的表格结构如下:

The Monkees - I'm A Believer
The Monkees - Daydream Believer  
The Beatles - Hello, Goodbye
The Beatles - Yellow Submarine 

艺术家和标题名称在同一行,我试图在搜索结果中显示这些:

The Monkees:
I'm A Believer
Daydream Believer

The Beatles:
Hello, Goodbye
Yellow, Submarine

艺术家名称只出现一次,就像歌曲标题上方的类别一样。

有什么办法可以用MySQL语句实现这个结构吗?

编辑:

我尝试过使用group_concat,但我只能显示歌曲标题,而不是艺术家名字。我的代码:

<?php
include 'config.php';
$trimmed = $_GET['term'];

$res = mysql_query("SELECT DISTINCT artist, GROUP_CONCAT(title SEPARATOR ', ') AS artists FROM songs WHERE artist LIKE '%$trimmed%'");
$row = mysql_fetch_array($res, MYSQL_ASSOC);
$result = $row['artists'];

echo $result;

?>

1 个答案:

答案 0 :(得分:1)

你看过做group_concat吗?除此之外,您可以在循环执行以下操作时创建数组:

$music = array();
$result = mysql_query("SELECT ARTIST,ALBUM FROM MUSIC") or die(mysql_error());
while($row = mysql_fetch_assoc($result)){
    $music[$row['ARTIST']][] = $row['ALBUM'];
}
echo '<pre>'.print_r($music,1).'</pre>';