01.09.2020, Vladimír Klaus, navštíveno 1232x

MS Access
SQL
SQL Server

Pokud se pokoušíte zadat relativně nezávadný SQL dotaz sestavený z několika propojení, můžete být nemile překvapeni chybovou hláškou, která nedává smysl.

SELECT *
FROM Akce
LEFT JOIN CisTypAkce
  ON CisTypAkce.ID=Akce.IdTypAkce
LEFT JOIN CisTypStavu
  ON CisTypStavu.ID=Akce.IdTypStavu
LEFT JOIN CisTypCharakteruMista
  ON CisTypCharakteruMista.ID=Akce.IdTypCharakteruMista

Po chvíli zkoumání zřejmě nenajdete žádný důvod, proč by se to nemělo Accessu líbit. A samozřejmě, že reálně žádný operátor nechybí!

MS Access a problémy při použití vícenásobného JOIN, obr. 1

Jenomže MS Access není MS SQL Server 🙄 Zkrátka je nutné dotaz upravit tak, aby jednotlivá spojení byla uzavřená v závorkách a interní systém se v tom mohl vyznat a vyhodnotit.

SELECT *
FROM
  (
    (
      Akce
      LEFT JOIN CisTypAkce
      ON CisTypAkce.ID=Akce.IdTypAkce
    )
    LEFT JOIN CisTypStavu
    ON CisTypStavu.ID=Akce.IdTypStavu
  )
  LEFT JOIN CisTypCharakteruMista
  ON CisTypCharakteruMista.ID=Akce.IdTypCharakteruMista

Není to tedy žádná katastrofa, ale zbytečně otravné to tedy je...

Zdroje: