SQLite Forum

JOIN query behaves differently with/without trailing ON?
Login
This has already been fixed on trunk.  Probably the same constant propagation bug reported earlier.

```
QLite version 3.32.0 2020-04-06 19:27:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> 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);
sqlite> -- INSERT DATA --
sqlite> 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);
sqlite> 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);
sqlite> 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);
sqlite> 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);
sqlite> 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);
sqlite> 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);
sqlite> 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);
sqlite> -- 7 TD rows inserted.
sqlite> -- JOIN + ON Query --
sqlite> 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 --
   ...> ;
12000.0|31.2|26.12|-12.11|-12.22|1.12
```