0

作成したエリアにショップを表示し、注文の日付を表示する必要があります。すでにここにある 2 つ (ショップとエリア) を結合するために 3 番目のテーブルを作成し、それを内部結合で結合しました。まず、次のような結果が得られました。

area name: name1
shops: shop1
date: date1

area name: name1
shops: shop2
date: date1

そして私は必要です:

area name: name1
shops: shop1, shop2
date: date1

次に、いくつかのコードを見つけてスクリプトに含めましたが、1行でしか機能しません(以下のコードの名前)。そのコードで日付のelseifを試してみると、間違って表示されます。コードは以下です。

<?php
include('db.php'); 
$result = mysql_query("SELECT * FROM area INNER JOIN area_join ON area.id = area_join.area_id INNER JOIN shops ON area_join.shops_id = shops.id ") or die("Error: " . mysql_error());; 
while($data = mysql_fetch_assoc($result)){
if($data['name'] != $groupname){
echo "<br><hr>Area name: ".$data['name']."<br />Shops: ";
$groupname = $data['name'];
}
echo "".$data['shop_name'].", ";
}
?>
4

2 に答える 2

1

group_concat を試しましたか? (今はテストできませんが、この方法だと思います)

SELECT areaname,group_concat(shops) FROM area INNER JOIN area_join ON area.id =    area_join.area_id INNER JOIN shops ON area_join.shops_id = shops.id
Group by areaname

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

于 2013-02-27T03:20:08.743 に答える
0

使用GROUP_CONCAT

SELECT  areaName,
        GROUP_CONCAT(DISTINCT shopname) shopList
FROM    area 
        INNER JOIN area_join 
            ON area.id = area_join.area_id 
        INNER JOIN shops 
            ON area_join.shops_id = shops.id 
GROUP   BY  areaName

テーブルで見つかった列名を元の名前に変更します。

于 2013-02-27T03:18:23.457 に答える