gpt4 book ai didi

mysql - 连接和组合多个表 MYSQL

转载 作者:行者123 更新时间:2023-11-29 12:14:32 25 4
gpt4 key购买 nike

将数据与 MySQL 合并时遇到问题。我有 4 个相互关联的表。

exhibitions
-id
-name
-location
-form_id

form
-id
-name

form_trans
-id
-form_id
-lang_id
-content

languages
-id
-name
-code

正如您所注意到的,我将 ID 相互链接,这样我就可以对任何表进行更改,而无需重复执行操作。这是我的第一手询问:

SELECT a.id, a.name, b.name, c.name 
FROM `form` a, `exhibitions` b, `languages` c, `form_trans` d
WHERE a.id = b.form_id
AND d.form_id = a.id
AND d.lang_id = c.id

此查询的问题在于它没有采用与任何展览无关的表格。为此,我假设使用 JOIN 语句,但我无法理解必须使用的语句。我有这个,但它甚至不是一个有效的查询...

SELECT a.id, a.name
FROM `forms` a
OUTER JOIN `exhibitions` b ON a.id = b.form_id

抱歉,我没有描述我想要实现的目标。我想选择所有表单,并且想要匹配展览(我可以将 form_id 与表单表的 id 相匹配),并且想要将语言表中的语言与表单相匹配(我通过链接 form_trans 来实现这一点)使用 id 和 form_id 将语言表与 form_trans 表链接起来,并使用 lang_id <> id 关系将语言表与 form_trans 表链接起来)

最佳答案

此查询应选择所有表单,即使它们没有展览或翻译:

SELECT f.id As FormId
, f.name as FormName
, e.name As exhibitionName
, l.name As LanguageName
FROM `form` f
LEFT JOIN `exhibitions` e ON(f.id = e.form_id )
LEFT JOIN `form_trans` ft ON(ft.form_id = f.id )
LEFT JOIN `languages` l ON(ft.lang_id = l.id)

你的错误:

  • 使用隐式连接而不是显式连接。
  • 使用任意别名而不是有意义的别名。

关于mysql - 连接和组合多个表 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053129/

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