Надеюсь, я все правильно объясню.
У меня есть запрос, где я присоединяюсь к нескольким таблицам. Способ настройки системы, когда один столбец заполнен, а другой - пустым, и наоборот. Вот как выглядят результаты моего запроса в данный момент:
CREATE TABLE mytable(
mainID INTEGER NOT NULL PRIMARY KEY
,acctID VARCHAR(4) NOT NULL
,emailID INTEGER NOT NULL
,type INTEGER NOT NULL
,created DATE NOT NULL
);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC123,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC124,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC125,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC126,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC127,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC127,'1/1/2018',12345,NULL,'12345');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ACB234,'1/2/2018',NULL,ABCDEFG,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC567,'1/3/2018',789432,NULL,'789432');
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC980,'1/4/2018',NULL,QRXS,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC980,'1/4/2018',NULL,QRXS,NULL);
INSERT INTO mytable(mainID,acctID,emailID,type,created) VALUES (ABC980,'1/4/2018',NULL,QRXS,NULL);
Вот что я пытаюсь сделать так:
id date pid pcid lid
ABC123 1/1/2018 12345 XYZ 12345
ABC124 1/1/2018 12345 XYZ 12345
ABC125 1/1/2018 12345 XYZ 12345
ABC126 1/1/2018 12345 XYZ 12345
ABC127 1/1/2018 12345 XYZ 12345
ABC127 1/1/2018 12345 XYZ 12345
ACB234 1/2/2018 98765 ABCDEFG 98765
ACB234 1/2/2018 98765 ABCDEFG 98765
ACB234 1/2/2018 98765 ABCDEFG 98765
ACB234 1/2/2018 98765 ABCDEFG 98765
ACB234 1/2/2018 98765 ABCDEFG 98765
ACB234 1/2/2018 98765 ABCDEFG 98765
ABC567 1/3/2018 789432 ZF1 789432
ABC567 1/3/2018 789432 ZF2 789432
ABC567 1/3/2018 789432 ZF3 789432
ABC567 1/3/2018 789432 ZF4 789432
ABC567 1/3/2018 789432 ZF5 789432
ABC567 1/3/2018 789432 ZF6 789432
ABC980 1/4/2018 8675309 QRXS 8675309
ABC980 1/4/2018 8675309 QRXS 8675309
ABC980 1/4/2018 8675309 QRXS 8675309
Вот примерно то, что я пытался: я чувствую, что упускаю из виду что-то очень очевидное и усложняю это, чем это должно быть ...
SELECT a.id
a.date
b.pid
b.pcid
c.lid
FROM table a
LEFT JOIN table b
on a.id = b.id(not bringing this column in)
LEFT JOIN table c
on b.pid = c.lid
WHERE b.pcid IN ( SELECT lid from table c
WHERE b.id = c.id)
По сути, я пытаюсь заполнить отсутствующие столбцы из PID, PCID, LID. Когда PCID существует. В таблице B 3 идентификатора. Если pcid заполнен, то pid нет и т. Д. Я хочу заполнить как pid, так и pcid.