SQLite Forum

JOIN query behaves differently with/without trailing ON?
Login
I have racked my brain to understand why the newish SQLite3.dll behaves differently for this query?
I only want to retrieve 1 row from this table.
2   12000.0   31.2      26.12    -12.11   -12.22   1.12  
If I comment out the ON clause, it works.
But, I never had to do that in earlier versions of SQLite3.dll.

Please advise why I see 3 rows now?

I also confirmed this behavior manually with DB Browser For SQLite.
Older versions yield only 1 row.
Newest version yields 3 rows! :(

-- Create SQLite database --
CREATE TABLE TD(`n(id)` INTEGER NOT NULL PRIMARY KEY, `TI(id)` INTEGER DEFAULT -999, `DieSN` TEXT DEFAULT '-999', `Die(n)` INTEGER DEFAULT -999, `Die(wm)` DOUBLE DEFAULT -999, `DieX(um)` INTEGER DEFAULT -999, `DieY(um)` INTEGER DEFAULT -999, `DieZ(um)` INTEGER DEFAULT -999, `DieM(mm)` DOUBLE DEFAULT -999, `DieA(°)` DOUBLE DEFAULT -999, `Bin(n)` INTEGER DEFAULT -999, `TT(s)` DOUBLE DEFAULT -999, `TTp(s)` DOUBLE DEFAULT -999, `n(n)` INTEGER DEFAULT -999, `TPG(n)` INTEGER DEFAULT -999, `T(C)` DOUBLE DEFAULT -999, `Vdd(V)` DOUBLE DEFAULT -999, `Idd(A)` DOUBLE DEFAULT -999, `RFPath` TEXT DEFAULT '-999', `Pi(dBm)` DOUBLE DEFAULT -999, `F(MHz)` DOUBLE DEFAULT -999, `S21(dB)` DOUBLE DEFAULT -999, `S11(dB)` DOUBLE DEFAULT -999, `S22(dB)` DOUBLE DEFAULT -999, `NF(dB)` DOUBLE DEFAULT -999);
-- INSERT DATA --
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,1,-999, -999, -999, -999, -999, -999);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0206,6000, 26.06, -6.11, -6.22,-999);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0212,12000,26.12,-12.11,-12.22,-999);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0218,18000,26.18,-18.11,-18.22,-999);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0306,6000, -999, -999, -999, 1.06);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0312,12000,-999, -999, -999, 1.12);
INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0318,18000,-999, -999, -999, 1.18);
-- 7 TD rows inserted.
-- JOIN + ON Query --
SELECT r1.`F(MHz)` AS `F(MHz)`,r2.`Idd(A)`*1e3 AS `Idd(mA)`,
r1.`S21(dB)` AS `S21(dB)`,r1.`S11(dB)` AS `S11(dB)`,r1.`S22(dB)` AS `S22(dB)`,
r2.`NF(dB)` AS `NF(dB)`
FROM
(SELECT `F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)` FROM TD WHERE
`TI(id)` = 1 AND
`Die(n)` = 1 AND
`F(MHz)` = 12000 AND
`TPG(n)` = 2) AS r1
JOIN
(SELECT `Idd(A)`,`F(MHz)`,`NF(dB)` FROM TD WHERE
`TI(id)` = 1 AND
`Die(n)` = 1 AND
`F(MHz)` = 12000 AND
`TPG(n)` = 3) AS r2
ON r1.`F(MHz)` = r2.`F(MHz)`

-- JOIN + ON Query Results --
6000.0    31.2      26.06    -6.11    -6.22    1.12     
12000.0   31.2      26.12    -12.11   -12.22   1.12     
18000.0   31.2      26.18    -18.11   -18.22   1.12