gpt4 book ai didi

mysql - 使用 SQL (mysql) 的复杂 select 语句

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

我正在编写一个应用程序并搜索特定的选择语句。我的MYSQL数据库情况如下:

  • 每个条目可以有多个单元。一个单元恰好与一个条目相关。
  • 每个单元可以有多个子单元。一个子单元可以与多个单元相关。

我通过下表意识到了这种情况:

  • 条目:id(整数)
  • 单位:id (int)、entry_id (int)
  • unit_subunits:unit_id (int)、subunit_id (int)
  • 子单元:id(整数)

我现在想要的是:我希望用户输入一个 subunit.id 并获取一个包含所有 entry.ids 的列表,其中包含输入 subunit.id 以及所有其他 subunit.id,其中与找到的entry.ids相关。结果应该如下所示:

(输入 = 子单元 5)

entry.id |子单元.id

条目 1 |亚基5

条目 1 |亚基26

条目 2 |亚基2

条目 2 |亚基5

...

仅获取与输入 subunit.id 相关的entry.ids 很容易。但我未能将所有内容整合到一条 SQL 语句中。我在我的应用程序中通过创建两个不同的语句解决了这个问题(其中为每个找到的entry.id执行第二个语句)。有没有一种优雅的解决方案,将这一切放入一个 sql 语句中?

非常感谢!

更新1

为了避免像这个问题的评论中那样的误解:实际上有一个数据集。但为了使这个问题尽可能理论化、普遍化和易于理解,我将其简化为“ids”。

最佳答案

作为第一次尝试,我会尝试这样的事情。它可能不会立即起作用(抱歉,我没有测试过),但它可能会给您一个可能的解决方案的想法。我不会称其为优雅,而且我会非常小心,特别是当表和/或预期输出很大时。它可能不是最佳的,如果分成两个语句可能会工作得更好。

SELECT e.id AS entryid, us2.subunit_id AS subunitid,
FROM unit_subunits AS us1
JOIN unit AS u1 ON (us1.unit_id = u1.id)
JOIN entry AS e ON (u1.entry_id = e.id)
JOIN unit AS u2 ON (e.id = u2.entry_id)
JOIN unit_subunits AS us2 ON (u2.id = us1.unit_id)
WHERE us1.subunit_id = 5;

关于mysql - 使用 SQL (mysql) 的复杂 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155141/

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