我在查找问题的解决方案时遇到问题,因为我是mysql的新手。以下代码有效:
<?php
//execute the SQL query and return records
$result = mysql_query("SELECT Event.id, Event.type, Event.eventclass, Event.venue,
date_format(Event.startdate, '%a %b %e %Y') as sort_startdate,
date_format(Event.enddate, '%a %b %e %Y') as sort_enddate,
Event.datespecifics, Event.registration,
Event.instructor1, Event.instructor2, Event.instructor3,
Venue.name, Venue.city
FROM Event,Venue
Where Event.type = '200HR Teacher Training' AND Event.venue = Venue.id
ORDER BY startdate ASC");
//fetch the data from the database
while ($row = mysql_fetch_array($result)) {
if(empty($row{instructor2})) {
echo "<p>At ".$row{name}.", ".$row{city}."<br/>".$row{sort_startdate}." - ".$row{sort_enddate}.", ".$row{datespecifics}."<br/>With: " .$row{instructor1}."</p> <br/><br/>";
}
else {
if(empty($row{instructor3})) {
echo "<p>At ".$row{name}.", ".$row{city}."<br/>".$row{sort_startdate}." - ".$row{sort_enddate}.", ".$row{datespecifics}."<br/>With ".$row{instructor1}." and ".$row{instructor2}."</p> <br/><br/>";
}
else {
echo "<p>At ".$row{name}.", ".$row{city}."<br/>".$row{sort_startdate}." - ".$row{sort_enddate}.", ".$row{datespecifics}."<br/>With ".$row{instructor1}.", ".$row{instructor2}." and ".$row{instructor3}."</p> <br/><br/>";
}
}
}
?>
问题是instructor1,instructor2和instructor3的输出是一个整数,它引用另一个列出所有教师的表。我不知道如何从该表中显示教师的名字。我假设我需要在SELECT语句中创建一个变量,这样我就可以给每个名称一个唯一的标识符,但我不知道如何这样做。谢谢你的帮助。
答案 0 :(得分:0)
这是通过JOIN
操作完成的。这是一个非常简单的交易。
你需要这个:
SELECT ...whatever...,
e1.instructor_name AS instr1,
e2.instructor_name AS instr2,
e3.instructor_name AS instr3,
Venue.name, Venue.city
FROM Event
JOIN Venue ON Event.venue = Venue.id
LEFT JOIN Instructor AS e1 ON Event.instructor1 = e1.instructor_id
LEFT JOIN Instructor AS e2 ON Event.instructor2 = e2.instructor_id
LEFT JOIN Instructor AS e3 ON Event.instructor3 = e3.instructor_id
Where Event.type = '200HR Teacher Training'
ORDER BY startdate ASC
注意,因为你需要选择三个不同的教师,你需要连接三次教师表,并给它三个不同的别名AS e1
等。
我使用LEFT JOIN,因为如果您的活动不是全部三位教师,那么这仍然有效。
我不确定教师表的布局(或确实是名称),所以这里有一些猜测。