2016-05-12 102 views
0

我有三个表:约束,车站和时间内部联接问题PHP

界有2列:boundID和boundName

站有3列:的stationID工作站名称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工作站名称boundID

5 | CitySquare | 2 ________________________________________________________________________________ boundID boundName

2 |南行线________________________________________________________________________________

TIMEID departureTime tramID的stationID

1 | 07:18:00 | 1 | 5

预期的结果是用户能够插入startStartion和endStation,并获得出发时间,如果boundID相同。

这是我想输出的结果

绑定名称|起始站|终端站|出发时间

South-SouthBound | Stourton | CitySquare |九点49分○○秒

+0

请提供预期的结果集和数据样本将是非常有益 – Alex

+0

这里是显示数据库中的截图,变量和我正在使用的查询。 –

+0

没有。在你的截图中几乎没有什么有用的。为OP中的每个表提供几行,并且这些记录应该彼此相关。例如,从id为2的“绑定”表中获取一条记录,并从其他表中获取所有相关数据。 – Alex

回答

0

INNER JOIN Bound c 

更改的码

INNER JOIN Bound b 

下面部分和更改列的别名太。在您的查询中发现的同名别名分配太多

编译查询时会造成混淆。 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'"; 
+0

像这样?现在我在'on条款'消息中得到'未知列S.boundID'\t \t //显示从一个站到另一个站的电车时间\t \t \t \t ELSE if($ startStation!=''&& $ endStation!=''&& $ DepartureTime ==''&& $ DepartureTime2 =='') \t \t $ query =“SELECT b.boundName,s.stationName,t 。出发时间 \t \t从车站S,时间t束缚b \t \t INNER JOIN束缚Ç \t \t ON S.boundID = B.boundID \t \t WHERE s.stationName = '$ startStation'AND' $端站'“; @Arun –

+0

别名是区分大小写的。如果你使用“S”,那么你必须使用相同的 – Arun

+0

现在我再次收到错误“不是唯一表/别名:'b'”:/ –

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' 
+0

我得到'不是唯一的表/别名:'b'消息? –

0

你的DB模式是有点怪我。从我的角度来看,您在表格中缺少很多必要的数据列。

但只是为了让你期望的结果,你可以尝试此查询:

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'