我有三个表:绑定,站点和时间
Bound有2列:boundID和boundName
Station有3列:stationID stationName boundID
时间有4列:timeID departureTime tramID stationID
我想显示用户在表单中输入的startStation和endStation,如果用户在文本字段中输入的工作站具有相同的boundID,则显示时间。目前,这是我设法做的所有事情,似乎无法得到结果。任何帮助将不胜感激!
//display tram times from one station to another
ELSE if($startStation != '' && $endStation !='' && $DepartureTime =='' && $DepartureTime2 =='')
$query ="SELECT b.boundName, s.stationName, t.departureTime
FROM Station s, Time t, Bound b
INNER JOIN Bound b
ON S.boundID=B.boundID
WHERE s.stationName = '$startStation'AND'$endStation'";
我在尝试此操作时收到此消息:"不是唯一的表/别名:' b'"
这是我的数据示例:
stationID stationName boundID
5 | CitySquare | 2 ________________________________________________________________________________ boundID boundName
2 |南 - 南________________________________________________________________________________
timeID departureTime tramID stationID
1 | 07:18:00 | 1 | 5
如果boundID相同,则预期结果是用户能够插入startStartion和endStation并获取出发时间。
这是我要输出的结果
绑定名称|启动站|终点站|出发时间
South-SouthBound | Stourton | CitySquare |九点49分○○秒
答案 0 :(得分:0)
更改以下代码部分
INNER JOIN Bound b
与
INNER JOIN Bound c
并更改列的别名。您的查询中找到的别名分配过于相同
编译查询时会产生混淆。 Mysql不知道你指的是哪个表。
修改:
尝试使用以下代码。我不确定哪个表有" boundID"字段
$query ="SELECT b.boundName, s.stationName, t.departureTime
FROM Station s, Time t, Bound b
INNER JOIN Bound c
ON s.boundID=b.boundID
WHERE s.stationName = '$startStation'AND'$endStation'";
答案 1 :(得分:0)
尝试将您的查询更改为以下内容:
SELECT b.boundName as bond_name, s.stationName as station_name, t.departureTime as departure_time
FROM Station as s, Time as t, Bound as b
INNER JOIN Bound as b
ON s.boundID = b.boundID
WHERE s.stationName = '$startStation' AND s.stationName = '$endStation'
答案 2 :(得分:0)
您的数据库架构对我来说有点奇怪。从我的角度来看,你在表中缺少很多必要的数据列。
但是为了获得预期结果,您可以尝试此查询:
http://sqlfiddle.com/#!9/e5ef0/1
SELECT
b.boundName `Bound Name`,
s.stationName `Start Station`,
e.stationName `End Station`,
t.departureTime `Departure Time`
FROM station s
INNER JOIN station e
ON e.boundId = s.boundId
AND e.stationName='$endStation'
INNER JOIN bound b
ON b.boundId=s.boundId
INNER JOIN `time` t
ON t.stationId=s.stationId
WHERE s.stationName = '$startStation'