gpt4 book ai didi

mySQL,使用不同条件在同一个表上进行多个连接。在查询时重命名列

转载 作者:行者123 更新时间:2023-11-29 04:49:38 25 4
gpt4 key购买 nike

您好,感谢您阅读我的问题。

首先,下图描绘了我正在创建的数据库的一部分。我的目标(除非有任何更好的方法来做到这一点)是支持多种语言的字段,这些字段通常在单独的表中被称为“schedule_name”和“schedule_description”之类的东西。 P.S - 我知道此图中的列类型标记错误。

database

如您所见,boat、cruise 和 schedule 都有一个 languageid 作为外键。如果我想拉出游轮和船的行程记录,请问我该怎么办?

我的表连接没问题,列别名已排序,但我想在每个别名中获取正确的详细信息。为了清楚起见

时间表有自己的 language_language_id 引用可供选择使用 language_id = 1language_name_en 是 - 星期一早上

Cruise 有自己的 language_language_id 引用可供选择使用 language_id = 2language_name_en 是 - Sunny Haze

船有自己的 language_language_id 引用可供选择使用 language_id = 3language_name_en 是 - 蓝海豚

回答对此问题的评论; en 代表英文,zhs 代表简体中文,zht 代表繁体中文。这些是该系统支持动态数据的语言。我认为像这样布置表格会很方便,这样就可以有一个只负责处理语言的用户类型;无需处理调度表。

到目前为止,我相信我的查询将按如下方式进行以获得示例记录,如下所示:

SELECT 
schedule_id,
s.language_name_en as schedule_name_en,
l.language_name_zhs as schedule_name_zhs,
l.language_name_zht as schedule_name_zht,
schedulesafename,
schedule_expected_arrival,
schedule_expected_departure,
cruise_id,
c.language_name_en as cruise_name_en,
c.language_name_zhs as cruise_name_zhs,
c.language_name_zht as cruise_name_zht
FROM
schedule as s
INNER JOIN
language as l
ON s.language_language_id = l.language_id
INNER JOIN
cruise as c
ON c.language_language_id = l.language_id
Where
schedule_id = 1;

下面是我希望使用列出的查询返回的一些示例数据。

scheduleid - 1
schedule_name_en - monday morning
schedule_name_zhs - 星期一的早晨
schedule_name_zht - 星期一的早晨
schedule_safename - pwupglfkpmwcbkgzhmzxrqfeqzlhvaed
schedule_expected_arrival - 1353138308
schedule_expected_departure - 1353139218
cruise_id - 1
cruise_name_en - Sunny Haze
cruise_name_zhs - 彩霞
cruise_name_zht - 彩霞
cruise_safename - bbhdrunzdmftyvhprefvogysgfrtnkgm

这让您了解我希望如何从数据库中获取数据。我的主要问题是如何在同一查询中删除语言记录。感谢您阅读我的问题。

最佳答案

我认为你非常接近,你只需要为它所针对的各个表重新使用具有不同别名的相同语言表......就像

SELECT 
S.schedule_id,
SL.language_name_en as schedule_name_en,
SL.language_name_zhs as schedule_name_zhs,
SL.language_name_zht as schedule_name_zht,
schedulesafename,
S.schedule_expected_arrival,
S.schedule_expected_departure,
C.cruise_id,
CL.language_name_en as cruise_name_en,
CL.language_name_zhs as cruise_name_zhs,
CL.language_name_zht as cruise_name_zht
FROM
schedule as s
INNER JOIN language as SL
ON s.language_language_id = SL.language_id
INNER JOIN cruise as c
on s.Cruise_Cruise_ID = c.Cruise_Id
INNER JOIN language as CL
ON c.language_language_id = CL.language_id
Where
S.schedule_id = 1;

首先注意,Schedule(别名S)在schedules language ID join上加入了language(第一次别名为“SL” for Schedule Language)。

接下来,时间表加入到 Cruise ID 上的 CRUISE。

最后,CRUISE 表通过 CRUISE 语言 ID 值连接到语言表(这次是 Cruise Language 的别名“CL”)。

因此,您现在有两次相同的表源,每次都针对您尝试提取的相应“语言 ID”元素。

关于mySQL,使用不同条件在同一个表上进行多个连接。在查询时重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13428351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com