我得到了一个复杂的查询,产生了连接结果。但是,虽然GROUP_CONCAT
是其他用途所必需的,但我仍然需要能够单独使用连接字符串的各个部分。
GROUP_CONCAT(id, name, date AS concat1
echo $db_field['concat1'];
...生成此输出:IdNameDate
,我需要能够分别使用(和回显)Id,Name和Date。我想它必须分配给一个数组,我是PHP的初学者,我真的很感激任何帮助。
为简单起见,上面我使用id
代替eventid
,name
代替eventname
和date
代替eventstartdate
。以下是完整的代码。
if ($db_found) {
$SQL ="
select sportname,
tournament_templatename,
tournament_stagename,
GROUP_CONCAT(eventid, eventname, eventstartdate SEPARATOR '<br />' ) as concat1
from (
SELECT event.id AS eventid,
event.name AS eventname,
event.tournament_stageFK AS eventtournamentstageFK,
event.startdate AS eventstartdate,
tournament_stage.id AS tournament_stageid,
tournament_stage.name AS tournament_stagename,
tournament_stage.tournamentFK AS tournament_stagetournamentFK,
tournament.id AS tournamentid,
tournament.name AS tournamentname,
tournament.tournament_templateFK AS tournamenttournament_templateFK,
tournament_template.id AS tournamenttemplateid,
tournament_template.name AS tournament_templatename,
tournament_template.sportFK AS tournament_templatesportFK,
sport.id AS sportid,
sport.name AS sportname
FROM
event INNER JOIN tournament_stage ON event.tournament_stageFK=tournament_stage.id
INNER JOIN tournament ON tournament_stage.tournamentFK=tournament.id
INNER JOIN tournament_template
ON tournament.tournament_templateFK=tournament_template.id
INNER JOIN sport ON tournament_template.sportFK=sport.id
WHERE
DATE(event.startdate) = CURRENT_DATE()
) a
group by sportname, tournament_templatename, tournament_stagename
order by sportid, tournament_templatename, tournament_stagename";
$result = mysql_query($SQL);
if($result === FALSE) {
die(mysql_error());
}
while($db_field=mysql_fetch_assoc($result)){
echo $db_field['concat1'];
}
mysql_close($db_handle);
}
我要么需要一种方法在连接它们之前回到结果,或者将IdNameDate显示为Id * Name * Date的方法,这样我就可以使用*作为爆炸分隔符。
答案 0 :(得分:0)
这样的东西?
$group = array();
$fields = array();
$fields['id'] = 2;
$fields['name'] = "test";
$fields['date'] = "2010/02/13";
$group["test"] = $fields;
获取单个字段:
echo $group["test"]["id"];
获得整个群组行:
echo implode(",", $group["test"]); // change "," to any delimiter character
获取所有组合行:
foreach($group as $key => $g)
echo $key.":".implode(",", $g).";"; // change "," to any delimiter character
希望这会有所帮助......
答案 1 :(得分:0)
我想这样做的唯一方法是:
最后,GROUP_CONCAT弊大于利。