我有一個像下面這樣的查詢,它工作正常。在sql查詢的同一張表上使用兩個JOIN
SELECT
"A".id AS A_id,
"B".id AS B_id,
"C".id AS C_id,
"D".id AS D_id,
"E".id AS E_id,
"F".id AS F_id,
"G".id AS G_id,
"H".id AS H_id,
"I".id AS I_id
FROM "A"
INNER JOIN "B" ON "A".id = "B".A_id
INNER JOIN "C" ON "B".C_id = "C".id
INNER JOIN "D" ON "C".D_id = "D".id
INNER JOIN "E" ON "D".id = "E".D_id
INNER JOIN "F" ON "E".F_id = "F".id
INNER JOIN "G" ON "F".G_id = "G".id
INNER JOIN "H" ON "G".id = "H".G_id
INNER JOIN "I" ON "H".I_id = "I".id;
現在我想補充一些特殊情況。表「B」與另一個表 連接,我必須添加特殊連接(完全連接),但在所有連接後。類似下面 (它`不工作,當然):
SELECT
"A".id AS A_id,
"B".id AS B_id,
"C".id AS C_id,
"D".id AS D_id,
"E".id AS E_id,
"F".id AS F_id,
"G".id AS G_id,
"H".id AS H_id,
"I".id AS I_id,
"Setup".id AS setup_id,
"Run".id AS run_id
FROM "A"
INNER JOIN "B" ON "A".id = "B".A_id
INNER JOIN "C" ON "B".C_id = "C".id
INNER JOIN "D" ON "C".D_id = "D".id
INNER JOIN "E" ON "D".id = "E".D_id
INNER JOIN "F" ON "E".F_id = "F".id
INNER JOIN "G" ON "F".G_id = "G".id
INNER JOIN "H" ON "G".id = "H".G_id
INNER JOIN "I" ON "H".I_id = "I".id
AND FROM
"Setup"
FULL JOIN "Run" ON "Setup".id = "Run".id
FULL JOIN "B" ON "Setup".id = "B".id;
我採用全連接,因爲每個表中的「運行」和「設置」僅包括一個行,但用表「B」所連接已經有了更多的一行,我想要把它們全部放在結果表中。
如何修復?也許嘗試在select中使用select?
我不明白。每個B rechord只有一個設置記錄?每個設置記錄只有一個運行記錄?然後只需使用內部連接,就是這樣。 –
您可能需要'LEFT JOIN'這些表,而不是完整的聯接。 –