2011-12-30 6 views
0

連結結果を生成する複雑なクエリがあります。しかし、他の目的にはGROUP_CONCATが必要ですが、連結された文字列を個別に使用できる必要があります。連結結果を個別に使用する

GROUP_CONCAT(id, name, date AS concat1 

echo $db_field['concat1']; 

が...この出力を生成しますIdNameDate、と私は使用(およびエコー)個別ID、名前や日付をできるようにする必要があります。私はそれが配列に割り当てられなければならないと思う、私はPHPの初心者であり、本当に助けに感謝します。私は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

このようなものはありますか?すべてのグループの行を取得するには

echo implode(",", $group["test"]); // change "," to any delimiter character 

:グループ全体のラインを取得するには

echo $group["test"]["id"]; 

:個々のフィールドを取得するために

$group = array(); 

$fields = array(); 
$fields['id'] = 2; 
$fields['name'] = "test"; 
$fields['date'] = "2010/02/13"; 

$group["test"] = $fields; 

foreach($group as $key => $g) 
    echo $key.":".implode(",", $g).";"; // change "," to any delimiter character 

は、この情報がお役に立てば幸いです...

+0

私はそのコードにどのように変数を割り当てるのか分かりません。 –

0

私はそれを行うための唯一の方法があると思います。IDと日付が一致しているとして、各結果からID、名前や日付を抽出するために、個々の文字列に

  • 使用SUBSTRを取得するためにGROUP_CONCAT結果を爆発

    1. 、彼らは常に同じ文字数を持っています

    最後に、GROUP_CONCATは良いよりも害があります。

  • 関連する問題