无法获得JOIN工作

时间:2015-10-17 18:33:37

标签: mysql sql

我有这两张桌子。第一张表包含公交信息。第二个表是多值的,包含 ALL 上述公交车站,公交车将停靠下车/接载乘客。

问题陈述

假设有两条总线 b1 b2 且目的地相同。如果用户选择电台 s1 ,我希望显示以上两种电话。下面是我正在使用的表结构和查询(查询有时可以工作,但有时不工作)

表格设计

Table 1 
=======
BusId Source Destination DepartureTime

Table 2
=======
BusId StationName ArrivalTime DepartureTime

SELECT 
  b.BusId, b.BusNo, b.Source, b.Destination, b.SrcDepartureTime 
  AS SrcDepTime, b.DstArrivalTime AS DstArrTime, bs.StationName,
  bs.ArrivalTime AS StationArrTime, bs.DepartureTime AS StationDepTime,
FROM 
  Buses b, BusStations bs 
WHERE (b.BusId = bs.BusId) AND (b.Source = **passenger_source** OR bs.StationName = **passenger_source** OR bs.StationName = **passenger_dest**) AND ((DATE(b.SrcDepartureTime) = '2015-10-17') AND (DATE(bs.DepartureTime) = '2015-10-17')) GROUP BY bs.BusId;

正如我所说,查询有时可行,但大部分都没有。我究竟做错了什么??感谢您的任何意见。

1 个答案:

答案 0 :(得分:0)

我写了以下内容:

我的情景是离开x站的人,想要前往目的地y,然后显示在x站停靠的所有巴士,并在指定时间前往目的地y。

我使用了相同的列名,所以应该很容易看到我做了什么。

declare @goingto as nvarchar(50)
declare @goingfrom as nvarchar(50)
declare @time as datetime

set @goingto = 'Basingstoke'
set @goingfrom = 'Winchester'
set @time = '2015-10-17 18:50:00.000'

select i.BusID,i.Source,i.Destination,s.StationName,s.DepartureTime from BusInfo i
left join BusStops s on i.BusID = s.BusID
where i.Destination = @goingto and s.StationName = @goingfrom 
and s.DepartureTime = @time

数据:

Table Bus Info
1   Southampton Basingstoke 2015-10-17 00:00:00.000
2   Portsmouth  Basingstoke 2015-10-17 00:00:00.000
3   Bristol          Winchester 2015-10-16 00:00:00.000
4   Winchester  Bristol         2015-10-16 00:00:00.000


Table Bus Stops

1   Winchester  2015-10-17 12:00:00.000 2015-10-17 18:50:00.000
1   Basingstoke 2015-10-17 19:00:00.000 2015-10-17 19:10:00.000
1   RedBridge   2015-10-17 21:00:00.000 2015-10-17 21:10:00.000
2   Winchester  2015-10-17 12:00:00.000 2015-10-17 18:50:00.000
3   Basingstoke 2015-10-17 19:00:00.000 2015-10-17 19:10:00.000
2   Southampton 2015-10-17 17:50:00.000 2015-10-17 18:50:00.000