我正在从事铁路运输。 我有以下表格:
DAY table
| - id | name |
| 1 | sunday |
| 2 | monday |
| 3 | tuesday|
电台表
|- id | name |
| 1 | zaria |
| 2 | kano |
| 3 | minna |
路线表
| - id | source_station_id | destination_station_id|
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 3 |
| 4 | 3 | 2 |
| 3 | 3 | 1 |
离境表
| route_id | day_id | departure_time |
| 1 | 2 | 07:00 hrs |
| 1 | 3 | 07:00 hrs |
| 3 | 2 | 15:30 hrs |
route_id, day_id, source_station_id, destination_station_id
是分别从route,day和station表引用的所有外键。
现在......我如何使用sql从这些表中获取.. 输出看起来像下表。
| source | destination | day | departure_time |
答案 0 :(得分:1)
您想使用JOIN
:
SELECT
source.name AS source,
destination.name AS destination,
day.name AS day,
departure.time AS departure_time
FROM departure
JOIN station AS source
ON departure.source_station_id = source.id
JOIN station AS destination
ON departure.source_station_id = destination.id
JOIN day
ON departure.day_id = day.id
WHERE
# any specific criteria you may have, like:
departure.day_id = 1 # for a sunday
应该这样做。有关详细信息,请参阅MySQL JOIN Syntax
那就是说,这是一个非常标准的问题,看到它被否决后我也不会感到惊讶。
此外,从结构的角度来看,你最好将“day”存储为DATETIME
,然后将其转换为动态的人类可读日期字符串。
就目前而言,由于你只是在一周的某一天,你无法区分本周和去年或去年。看看this comment的下半部分,我开始谈论跨越一段时间,并讨论DATETIME
的使用。对于性能和易用性,使用本机数据类型是更可取的。