问候并感谢您阅读我的问题。mySQL,多个连接在不同条件的同一个表上。在查询中重命名列
首先,下图描绘了我创建的数据库的一部分。我的目标(除非有更好的方法来做到这一点)是为通常被称为“schedule_name”和“schedule_description”之类的字段支持多种语言到一个单独的表中。 P.S--我知道这个图中的列类型被严重标记。
正如你所看到的,船,邮轮和安排各有一个languageid为外键。如果我想用巡航和船只取出计划记录,我该怎么办?
我有表加入没有问题,列别名'排序,但是,想要获得正确的细节到每个别名。为了清楚
计划有它自己的language_language_id参考使用LANGUAGE_ID = 1个 language_name_en被挑选出 - 周一早晨
克鲁斯有它自己的language_language_id参考使用LANGUAGE_ID = 2 language_name_en被挑选出 - 阳光阴霾
船有它自己的language_language_id参考使用LANGUAGE_ID = 3 language_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
这给你一个想法,我想从数据库中获取数据。我的主要问题是如何在相同的查询中翻译语言记录。感谢您阅读我的问题。
只是为我的问题添加一点范围,我错过了澄清一些歧义。我在运行时也很熟悉列重命名,并且会添加一个关于我相信事情应该如何的快速查询。 – Symbal
在做了一些更多的研究之后,我遇到了使用子查询来实现该壮举的前景。我相信使用子查询会让优化器感到困惑吗? – Symbal
我不认为子查询会混淆优化器。但你的问题让我困惑。我不确定你的问题是什么,真的。你想知道如何制作列别名?或者是什么? –