此处的目标是能够查询为其提供旅程的数据库,根据旅程,数据库将返回所有停止代码贯穿这段旅程。
因此,例如,我需要能够说,“选择所有通过旅程34的停止代码”。这应该只返回STOP CODE:SZDASDASDE。 (在生产中会返回更多代码)。
上面你可以看到数据库中第一个表的图像。
您还可以看到第二个表,其中每个 STOP CODE 都有很多 JOURNEYS 作为父级。据我所知,将多个旅程放入单个字段并不遵循标准数据库设计,所以如果有人可以帮我修复,我会非常感激。
这些图片是在微软的Excel中拍摄的,只是为了计划我将如何做,生产将使用MySQL数据库。
由于
答案 0 :(得分:5)
您在停止代码和旅程之间存在多对多关系。要根除这一点,你需要分解关系。
为了做到这一点,你需要一个中间表,我们称之为JourneyStopCode,它将如下所示:
JourneyStopCode:
JourneyStopCodeID (primarykey)
JourneyID
StopCodeID
然后您的停止代码表将没有JourneyID字段。
要检索旅程的停止代码,您需要执行以下操作:
SELECT * FROM StopCode
INNER JOIN JourneyStopCode ON StopCode.StopCodeID = JourneyStopCode.StopCodeID
INNER JOIN Journey On Journey.JourneyID = JourneyStopCode.JourneyID
WHERE JourneyID = @yourJourneyID
编辑:可视化:
--------------- --------------------- ----------------
| Journey | | JourneyStopCode | | StopCode |
--------------- --------------------- ----------------
| JourneyID |<--- | JourneyStopCodeID | --->| StopCodeID |
| Description | |----| JourneyID | | | Latitude |
--------------- | StopCodeID |------ | Longitude |
--------------------- ----------------
然后你的数据看起来像:
----------------------------------------
| JourneyID | Description |
----------------------------------------
| 34 | Southampton - Portsmouth |
----------------------------------------
----------------------------------------
| StopID | Latitude | Longitude |
----------------------------------------
| SSDAFS | 12345 | 67890 |
----------------------------------------
------------------------------------------
| JourneyStopID | JourneyID | StopCodeID |
------------------------------------------
| 1 | 34 | SSDAFS |
------------------------------------------
答案 1 :(得分:3)
停止代码的旅程是一个多对多的关系,你最想要一个连接表。
Table 1 :
SID | Stop Code | Long | lat
0 | ASDFSAFA | 1 | 2
1 | sdDSGSDGS | 4 | 0
....
Table 2 :
Journey | Description
0 | Blah blah blah
Table 3 :
Journey | SID
0 | 1
2 | 1
1 | 4
SELECT A.Longitude, A.Latitude FROM TABLE1 WHERE A.SID IN (
SELECT SID FROM TABLE3 WHERE JOURNEY = 0
);
答案 2 :(得分:0)
试试这个:
TABLE 1
-------
JOURNEY (PK) DESCRIPTION
TABLE 2
-------
SEQUENCENO (PK) STOP_CODE LATITUDE LONGITUDE
TABLE 3
-------
JOURNEY SEQUENCENNO