Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 从间接关系获取数据_Sqlite - Fatal编程技术网

Sqlite 从间接关系获取数据

Sqlite 从间接关系获取数据,sqlite,Sqlite,我有4个sqlite表A、B、C、D 三关系表 A_B_依赖于表A,B A_C_依赖于表A,C C_D_依赖于表C,D 如何建立表B和表D上的关系?我相信以下可能是您想要的:- SELECT * FROM b JOIN A ON a_b_rel = a.id JOIN C ON a_c_rel = a.id JOIN D ON c_d_rel = c.id ; 你从B得到一行,然后把它和a连接起来,这样你就可以从C得到相关的行,这样你就可以从D得到相关的行 例如:

我有4个sqlite表A、B、C、D

三关系表

A_B_依赖于表A,B A_C_依赖于表A,C C_D_依赖于表C,D
如何建立表B和表D上的关系?

我相信以下可能是您想要的:-

SELECT * FROM b 
    JOIN A ON a_b_rel = a.id 
    JOIN C ON a_c_rel = a.id 
    JOIN D ON c_d_rel = c.id
;
你从B得到一行,然后把它和a连接起来,这样你就可以从C得到相关的行,这样你就可以从D得到相关的行

例如:-

DROP TABLE IF EXISTS a;
DROP TABLE IF EXISTS b;
DROP TABLE IF EXISTS c;
DROP TABLE IF EXISTS d;
CREATE TABLE IF NOT EXISTS a (id INTEGER PRIMARY KEY, name_a TEXT);
CREATE TABLE IF NOT EXISTS b (id INTEGER PRIMARY KEY, a_b_rel INTEGER, name_b TEXT);
CREATE TABLE If NOT EXISTS c (id INTEGER PRIMARY KEY, a_c_rel INTEGER, name_c TEXT);
CREATE TABLE IF NOT EXISTS d (id INTEGER PRIMARY KEY, c_d_rel INTEGER, name_d TEXT);
INSERT INTO a (name_a) VALUES
    ('FRED'),
    ('BERT'),
    ('TOM');
INSERT INTO b (a_b_rel,name_b) VALUES 
    (1,'REFERENCES FRED'),
    (1,'ALSO REFERENCES FRED'),
    (1,'REFERENCES FRED YET AGAIN'),
    (2,'REFERENCES BERT'),
    (2,'ANOTHER REFERENCE TO BERT'),
    (3,'LOOKS AT TOM'),
    (3,'LINKED TO TOM'),
    (3,'MAPPED TO TOM');
INSERT INTO c (a_c_rel,name_c) VALUES
    (1,'C MAPS TO FRED'),
    (1,'ANOTHER C MAP TO FRED'),
    (2,'C LOOKING AT BERT'),
    (3,'C LOOKING AT TOM');
INSERT INTO d (c_d_rel,name_d) VALUES
  (1,'D SEES C MAPS TO FRED'),
    (1,'ANOTHER D LOOKING AT C MAPS TO FRED'),
    (4,'D SEES C MAPPED TO TOM');
SELECT * FROM b 
    JOIN a ON a_b_rel = a.id 
    JOIN c ON a_c_rel = a.id 
    JOIN d ON c_d_rel = c.id
;
结果:-