如何从 TABLE A 访问 TABLE C 以及来自 TABLE B 的平均值
How to access TABLE C from TABLE A with meantiming values from TABLE B
我们有 table A、B 和 C
一个
+----+-----+
| id | b_1 |
+----+-----+
| 1 | 51 |
| 2 | 52 |
| 3 | 53 |
| 4 | 54 |
+----+-----+
乙
+----+-----+
| id | c_1 |
+----+-----+
| 51 | 71 |
| 52 | 72 |
| 53 | 73 |
| 54 | 74 |
+----+-----+
C
+----+--------+
| id | locked |
+----+--------+
| 71 | 1 |
| 72 | 0 |
| 73 | 0 |
| 74 | 1 |
+----+--------+
现在我想做这样的事情:
SELECT * FROM WHERE (SELECT locked FROM C WHERE id = (SELECT c_1 FROM B WHERE id = b_1)) = 0
所以这个伪代码的结果应该是tableA的所有值locked = 0
在 table C 中。但是为此,我必须 jump over B 并获取 id 对。
我该怎么做?
你应该使用 JOIN
SELECT *
FROM A
JOIN B ON (B.A_id = A.A_id)
JOIN C ON (C.A_id = A.A_id)
我用 A、B、C 来引用表格,用 table_id 来引用你需要 select 的 FK。
这只是一个示例,您需要根据自己的情况进行调整。
您可以在这些表之间使用 INNER JOIN
s :
select a.*
from tableA a
join tableB b on b.id = a.b_1
join tableC c on c.id = b.c_1
where c.locked = 0;
id b_1
2 52
3 53
其中 returns 只有 TableA
的列值。
这是你需要的。
SELECT *
FROM A
INNER JOIN B ON (B.id = A.b_1)
INNER JOIN C ON (C.id = B.c_1)
WHERE
c.locked=0
使用 JOIN 应该可以做到:
select *
from A
join B on b.id = a.b_1
join C on c.id = b.c_1
where c.locked = '0'
https://dbfiddle.uk/?rdbms=oracle_18&fiddle=6ef50499b7bfed71f7ec9626ad196cba
使用
select A.*
如果你只想要 table 个元素。
我们有 table A、B 和 C
一个
+----+-----+
| id | b_1 |
+----+-----+
| 1 | 51 |
| 2 | 52 |
| 3 | 53 |
| 4 | 54 |
+----+-----+
乙
+----+-----+
| id | c_1 |
+----+-----+
| 51 | 71 |
| 52 | 72 |
| 53 | 73 |
| 54 | 74 |
+----+-----+
C
+----+--------+
| id | locked |
+----+--------+
| 71 | 1 |
| 72 | 0 |
| 73 | 0 |
| 74 | 1 |
+----+--------+
现在我想做这样的事情:
SELECT * FROM WHERE (SELECT locked FROM C WHERE id = (SELECT c_1 FROM B WHERE id = b_1)) = 0
所以这个伪代码的结果应该是tableA的所有值locked = 0
在 table C 中。但是为此,我必须 jump over B 并获取 id 对。
我该怎么做?
你应该使用 JOIN
SELECT *
FROM A
JOIN B ON (B.A_id = A.A_id)
JOIN C ON (C.A_id = A.A_id)
我用 A、B、C 来引用表格,用 table_id 来引用你需要 select 的 FK。
这只是一个示例,您需要根据自己的情况进行调整。
您可以在这些表之间使用 INNER JOIN
s :
select a.*
from tableA a
join tableB b on b.id = a.b_1
join tableC c on c.id = b.c_1
where c.locked = 0;
id b_1
2 52
3 53
其中 returns 只有 TableA
的列值。
这是你需要的。
SELECT *
FROM A
INNER JOIN B ON (B.id = A.b_1)
INNER JOIN C ON (C.id = B.c_1)
WHERE
c.locked=0
使用 JOIN 应该可以做到:
select *
from A
join B on b.id = a.b_1
join C on c.id = b.c_1
where c.locked = '0'
https://dbfiddle.uk/?rdbms=oracle_18&fiddle=6ef50499b7bfed71f7ec9626ad196cba
使用
select A.*
如果你只想要 table 个元素。