簡體   English   中英

具有多個表的復雜INNER JOIN查詢的回顯結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM