Внутреннее соединение таблицы дважды с другим столом - sqlite - PullRequest
0 голосов
/ 27 сентября 2019

благодарен за вашу помощь.У меня есть две таблицы, и я хотел бы дважды соединить одну таблицу с другой.

CREATE TABLE "indexlist" (
    "id"    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "word"  UNIQUE
)

INSERT INTO "indexlist" (words) VALUES
    ( 'run' ),
    ( 'hand' ),
    ( 'man' ),
    ( 'far' )

CREATE TABLE "nodes" (
    "source"    TEXT,
    "Target"    TEXT
)


INSERT INTO nodes ( source, target ) VALUES
    ( "run", "far" ),
    ( "far", "hand" );

Я пробовал это.Он не выдает сообщение об ошибке, но не показывает никаких результатов:

SELECT t.id, t.word, 
   t1.target, t2.source
FROM indexlist t
LEFT JOIN nodes t1 ON t1.target=t.word
LEFT JOIN nodes t2 ON t.word=t2.source

Я хотел бы вывести следующую таблицу:

source_id | source | target | target_id
=======================================
1         | run    | far    |         4

4         | far    | hand   |         2

1 Ответ

0 голосов
/ 27 сентября 2019

Вы должны присоединиться, используя LEFT объединение nodes с 2 копиями indexlist:

SELECT i1.id source_id, n.source, n.target, i2.id target_id
FROM nodes n
LEFT JOIN indexlist i1 ON n.source = i1.word
LEFT JOIN indexlist i2 ON n.target = i2.word

Результаты:

source_id source    Target  target_id
1         run       far     4
4         far       hand    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...