2011-12-30 46 views
0

我得到了一個複雜的查詢,它產生了一個連接的結果。但是,儘管GROUP_CONCAT對於其他目的是必需的,但我仍然需要能夠分別使用連接字符串的各個部分。單獨使用級聯結果

GROUP_CONCAT(id, name, date AS concat1 

echo $db_field['concat1']; 

...產生這樣的輸出:IdNameDate,我需要能夠使用(和迴音)ID,姓名和日期分開。我想它必須分配給一個數組,我是PHP中的一個begginer,我非常感謝任何幫助。

爲了簡單起見,以上我已經使用id代替eventidname代替eventnamedate代替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作爲標識*名稱*日期,所以我可以用一種方式*爲爆炸分隔符。

回答

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 

希望這有助於...

+0

我不知道如何將變量分配給該代碼。 – 2011-12-30 20:33:06

0

我想這樣做的唯一的辦法是:

  1. 爆炸GROUP_CONCAT結果讓個別串
  2. 使用SUBSTR從每個結果提取ID,姓名及日期標識及數據是一致的,它們始終具有相同數量的字符

最後,GROUP_CONCAT會造成更多傷害而不是更好。