這是我的第一篇文章,但我一直在這裏閱讀很多很多很棒的信息。如何引用同一個表中的多個查找?
當我試圖解釋我的困境時,請耐心等待。我甚至不知道如何標記我的問題,因爲我不知道我正在嘗試做什麼的術語。我是PHP/MySQL的初學者(當你看到我的問題時,這會變得非常明顯),但我渴望學習。
無論如何,這裏有雲:
我有兩個表,命名爲Games
和Teams
。
mysql> describe games;
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| homeTeam | int(11) | NO | | NULL | |
| awayTeam | int(11) | NO | | NULL | |
| homeScore | int(11) | NO | | NULL | |
| awayScore | int(11) | NO | | NULL | |
| homeOdds | decimal(10,2) | NO | | NULL | |
| drawOdds | decimal(10,2) | NO | | NULL | |
| awayOdds | decimal(10,2) | NO | | NULL | |
| gameDate | date | NO | | NULL | |
+-----------+---------------+------+-----+---------+----------------+
和
mysql> describe teams;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| team | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
我想等領域Games.homeTeam
和Games.awayTeam
爲他們在Teams.id
和Teams.team
字段的值進行查找。基本上Games.homeTeam
應該在Teams.id
找到它的等價物。夠簡單。但是,我希望Games.homeTeam
和Games.awayTeam
在同一個SQL語句內的Teams
表中查找。
我想也許這樣的事情會的工作:
$result = mysql_query("SELECT * FROM Games g, Teams ht, Teams at where g.homeTeam = ht.id AND g.awayTeam = at.id ORDER BY g.gameDate") or die(mysql_error());
,然後挑行了:
while($row = mysql_fetch_array($result)) { echo "Home Team: " . $row['ht.team'];}
這是一個沒有去,因爲我得到一個MySQL錯誤說沒有指數名爲ht.team
。
我希望這很清楚我想在這裏實現什麼。我應該怎麼做呢?我假設我必須使用某種類型的別名,但是我無法將自己的頭圍繞在SQL語句應該看起來像完成我想要的東西上。
澄清你確切的問題是什麼,$ row ['ht.team']應該是$ row ['team'] ... PHP抱怨你通過的密鑰「ht.team」doesn陣列中不存在。如果你想更好地看看mysql_fetch_array()返回什麼,請執行print_r($ row); ..從那裏你會看到@Michael Berkowski的回答是解決你的困境的一個很好的方法。 –