1

recordid、artist、album、description、coverimg という列を持つ records という名前のテーブルがあります。テーブル内のいくつかのアルバムには、同じアーティストが含まれています。

私のサイトでは、次のように表示したいと思います。

-アーティスト1 アルバム1 アルバム2 - アーティスト2
  アルバム
  3
-アーティスト
  3
アルバム4
  アルバム
  5

GROUP BY を使用すると、アーティストごとに 1 行だけ表示されます。リレーショナル テーブルに頼らずにそれらをグループ化する他の方法はありますか?

サイトを介してテーブルを挿入および更新するためのフォームができたので、これをリレーショナル テーブルで機能させるためにフォームをどのようにコーディングする必要があるかわかりません。

4

2 に答える 2

2

これを試して

select artist,group_concat(album) from albums group by artist

あなたにあげる

artist1  | album1,album2,album3
artist2  | albumx,albumy

たとえば、explode(row[1]) を使用して、PHP で 2 番目の列を分割できます。

それはあなたを少し助けるはずです

于 2012-08-08T19:07:06.070 に答える
1

なしでそれを行うことができますgroup by

<?php
$query = 'Select artist, album
    FROM records
    ORDER BY artist'
$result = mysql_query($query);

$artist = '';
while ($line = mysql_fetch_assoc($result)){
    // only show artist when it's an other artist then the previous one
    if ($line['artist'] != $artist){
        echo $line['artist'].'<br/>';
        $artist = $line['artist'];
    }
    echo $line['album'].'<br/>';
}
?>

もう mysql_* 関数を使用すべきではないことはわかっています。mysqli_* または PDO を選択してください....

于 2012-08-08T19:15:38.940 に答える