[英]Echo results of a complicated INNER JOIN query with multiple tables
這是我的第一個問題。 我有一個復雜的SQL數據庫,我需要連接具有相同列名的不同表。
“賽事”是一項體育比賽。 它包含鏈接到Tournament_stage表的Tournament_stageFK,包含與Tournament表鏈接的TournamentFK,包含與Tournament_Template表鏈接的Tournament_templateFK,包含與SportTable鏈接的sportFK。
因此,為了找出匹配的運動,我需要進行內連接,否則我必須打開數百萬次數據庫。 唯一的方法是這樣做,但我不知道如何顯示結果。 我對搜索結果的不良嘗試如下:
$SQL = "SELECT sport.name,
country.name,
tournament_template.name,
tournament.name,
tournament_stage.name,
event.*
FROM tournament_template
INNER JOIN sport
ON tournament_template.sportFK = sport.id
INNER JOIN tournament ON tournament.tournament_templateFK = tournament_template.id
INNER JOIN tournament_stage ON tournament_stage.tournamentFK = tournament.id
INNER JOIN event ON event.tournament_stageFK = tournament_stage.id
INNER JOIN country ON tournament_stage.countryFK = country.id
WHERE DATE(event.startdate) = CURRENT_DATE()
ORDER BY sport.name ASC,
country.name ASC,
tournament_stage.name ASC,
event.startdate ASC";
$result = mysql_query($SQL);
while($get=mysql_fetch_array($result))
{
echo $result['event.name'];
echo "<br>";
}
您的結果將作為按列名索引的數組獲取,這是您的幾個列的“名稱”...表名稱sport,country,template等不是返回索引的一部分。 因此,您需要提供唯一的列名
為每個列設置一個別名(例如SELECT sport.name AS sport_name),然后在echo中使用別名引用它(例如$ result ['sport_name'])。
您需要使用列別名並訪問fetch調用中的列別名。 代替event.*
,明確需要的列:
$SQL = "SELECT sport.name AS sportname,
country.name AS countryname,
tournament_template.name AS templatename,
tournament.name AS tournamentname,
tournament_stage.name AS stagename,
/* Use explicit column names instead of event.* */
event.name AS eventname,
event.someothercol AS someother
FROM tournament_template
...etc...
...etc...";
// Later...
while($row=mysql_fetch_array($result))
{
echo $row['eventname'];
echo "<br>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.