2010-07-14 24 views
0

我想要做的是我有我的表结构如下所示:如何以这种方式构建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; 

?> 
+0

在查询结束做一个GROUP BY艺术家? – Prix 2010-07-14 23:47:27

回答

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>'; 
+0

在对group_concat进行了一些研究之后,我已经陷入困境,目前我只能获得歌曲标题来显示。我已将自己的代码发布在原始帖子中。 我已经使用你的php代码,它奇妙的工作,虽然在寻找一个解决方案后,我仍然不知道如何格式化艺术家名称和歌曲标题,以适当地从链接,CSS等阵列回声 我你仍然可以很清楚地了解php和mysql。我会做更多的研究,看看我能否自己找到这些答案,尽管如果有人能帮助我,我将不胜感激! :) – user389956 2010-07-15 02:47:23

+0

没关系,我刚刚发现了关于嵌套循环等方面的工作,所以都想出了如何使用数组进行格式化。我肯定经过一些Google搜索后,我会弄清楚如何使用group_concat。 感谢您的帮助! – user389956 2010-07-15 04:14:16