【发布时间】:2012-09-27 13:05:04
【问题描述】:
这是我的第一篇文章,但我在这里阅读了很长时间,吸收了很多重要信息。
请耐心等待我试图解释我的困境。我什至不确定如何给我的问题贴上标签,因为我真的不知道我正在尝试做什么的术语。我是 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 " 数组中不存在。如果您想更好地查看 mysql_fetch_array() 返回的内容,请执行 print_r($row); .. 从那里你会看到@Michael Berkowski 的回答是解决你困境的好方法。