0

我需要在创建的区域中显示商店以及下订单的日期。我创建了第三个表来加入两个已经在这里的表(商店和区域),并通过内部连接加入。首先,我得到这样的结果:

area name: name1
shops: shop1
date: date1

area name: name1
shops: shop2
date: date1

我需要:

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

然后我找到了一些代码并将其包含在脚本中,但它仅适用于一行(下面代码中的名称)。如果我尝试使用 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 回答