【发布时间】:2021-04-26 19:02:49
【问题描述】:
我有一些用英语和波斯语 (fa) 写的帖子,所以我的目的是获取每个英语帖子的所有 fa 翻译帖子,如果不存在则获取英语默认帖子。
wp_posts 表
897,899,902,1034 are English Posts
1019,1035 are Persian Posts
1019 is translated post of 902 and 1035 is translated post of 1034
这些属性在另一个名为 wp_icl_translations 的表中定义
element_id指的是wp_posts.ID,post和翻译版本都是同一个trid,source_language_code of null表示英文原帖,如果设置为'en'则表示是en语言的翻译帖。
所以我想要的结果是:
我已经可以做到这一点了:
如果存在,我需要一些条件来选择仅 fa,如果不存在,则选择默认 (en)。
这是所有示例数据和所有内容的完整小提琴链接:
https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=c86dce6ea0b87f863782fbff47e0e526
选择所有列对我来说非常重要,因为这只是一个测试表,真正的表还有很多列,我需要将它们全部获取。
以下是完整的表格,以一行为例:
https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=37f8af9fd14c60f4ea23fd4778b86806
【问题讨论】:
-
我不明白你的表结构。在我看来,应该有第三个表,其中包含语言代码、帖子 ID 和翻译。这些数据存储在哪里?
-
@TimBiegeleisen 你介意检查小提琴链接吗?我认为它会更明显。没有其他表。wp_posts 有原始帖子,翻译后的帖子都在 wp_posts 中。但是 wp_icl_translations 可以显示哪个是原创的,哪个是翻译的,并且关系依赖于 trid 列,因此所有翻译和原始帖子都具有相同的 trid 值。
-
请不要delete & repost,编辑。在您第一次发帖时,这有我的 cmets 的所有问题。 PS请use text, not images/links, for text--including tables & ERDs。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。 PS 但这是给出minimal reproducible example 的结果。 PS请通过编辑进行澄清,而不是cmets。 PS 将所有需要询问的内容放在您的帖子中,而不仅仅是在链接中。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask help center 停止尝试编写您的总体目标并从给定的代码中解释您的期望以及原因。
-
感谢您的所有解释,下次我会问问题时会使用它。
标签: mysql join conditional-statements