gpt4 book ai didi

mysql - SQL 链接连接

转载 作者:行者123 更新时间:2023-11-29 17:33:41 25 4
gpt4 key购买 nike

编辑:问题是表 A_B 和 B_C 中的 B-id 数据不匹配,没有重叠

我有下表:

  • A(id, …)
  • A_B(a_id, b_id)
  • B_C(b_id, c_id)
  • C_D(c_id, d_id)
  • D(id,值,...)

我想要根据 D 中的行值从 A 中获取一些行。表 A_B、B_C 和 C_D 只是从一个表到另一个表的 id 映射。

我试图得到看起来像这样的东西:

select * from A where D.value = "true"

我到目前为止:

select * from A 
inner join A_B on A_B.a_id = A.id
inner join B_C on B_C.b_id = A_B.b_id

这只是一个空表。

我开始认为我正在以错误的方式处理这个问题,或者可能误解了应该如何连接表。

最佳答案

如果您的数据是一致的,那么您所拥有的就可以正常工作。这是您的数据库和查询的一个版本,它演示了这一点。为了简单起见,我推断出表bc的存在,并将X_Y样式表中的各个列作为单个表的外键-字母表。

CREATE TABLE a
(
id INTEGER NOT NULL PRIMARY KEY,
info VARCHAR(20) NOT NULL
);
CREATE TABLE b
(
id INTEGER NOT NULL PRIMARY KEY,
data VARCHAR(20) NOT NULL
);
CREATE TABLE C
(
id INTEGER NOT NULL PRIMARY KEY,
extra VARCHAR(20) NOT NULL
);
CREATE TABLE d
(
id INTEGER NOT NULL PRIMARY KEY,
value VARCHAR(20) NOT NULL
);
CREATE TABLE a_b
(
a_id INTEGER NOT NULL REFERENCES a,
b_id INTEGER NOT NULL REFERENCES b,
PRIMARY KEY (a_id, b_id)
);
CREATE TABLE b_c
(
b_id INTEGER NOT NULL REFERENCES b,
c_id INTEGER NOT NULL REFERENCES C,
PRIMARY KEY(b_id, c_id)
);
CREATE TABLE c_d
(
c_id INTEGER NOT NULL REFERENCES C,
d_id INTEGER NOT NULL REFERENCES d,
PRIMARY KEY(c_id, d_id)
);
INSERT INTO a VALUES(1, "Quasimodo");
INSERT INTO b VALUES(20, "Quiet");
INSERT INTO C VALUES(333, "Contemporaneous");
INSERT INTO d VALUES(4444, "true");

INSERT INTO a_b VALUES(1, 20);
INSERT INTO b_c VALUES(20, 333);
INSERT INTO c_d VALUES(333, 4444);
SELECT *
FROM a
JOIN a_b ON a_b.a_id = a.id
JOIN b_c ON b_c.b_id = a_b.b_id
JOIN c_d ON c_d.c_id = b_c.c_id
JOIN d ON d.id = c_d.d_id
WHERE d.value = "true";

对于给定的数据,会产生:

1      Quasimodo     1      20     20     333    333    4444   4444   true

因此,如果数据正确,您正在构建的查询就可以产生答案。但是,如果您在不完整的查询中得到一个空表,那么您的表中存在数据问题 - 或者(偶然)您的大纲架构误导了我们。

在运行 macOS High Sierra 10.13.4 的 Mac 上执行测试,使用 Informix 12.10.FC6,但使用的内容被认为是 Informix 和 MySQL 通用的 SQL 子集。

关于mysql - SQL 链接连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460924/

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