【发布时间】:2015-10-17 18:33:37
【问题描述】:
我有这两张桌子。第一个表包含总线信息。第二个表是多值的,包含上述巴士的所有站,巴士将在这些站停靠/接送乘客。
问题陈述
假设有两辆公共汽车 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;
正如我所说,查询有时有效,但大多无效。我究竟做错了什么??感谢您的任何意见。
【问题讨论】:
-
您在 sqlfiddle 中加载样本的地方,我们将拥有真正的设计和一些数据来玩
-
在过去一年左右的时间里,您还有 3 个问题的答案。似乎您要么没有将它们带到已回答的绿色复选标记状态,要么没有完成关于它们为什么不起作用的想法,或者其他什么。这就是我们在这里滚动的方式
-
您使用的是
group by,但SELECT中的大部分列都没有聚合函数。因此,您会得到不确定的值。