Test podmínek AND a OR
Data jsou umístěna zde https://www.pirati.cz/playground/andortest/data1?do=index
Cílem je vytvořit pomocí syntaxe pluginu stejnou podmínku, která by se v syntaxi MySQL zapsala jako
SELECT … FROM `andortest` WHERE (a=1 AND b>3) OR (a=2 AND b⇐2);
Nejprve zobrazení všech existujících dat.
Zdrojový kód (podmínka where je tam použita, aby se zbytečně nezobrazovala případná zcela nesouvisející data)
---- datatable ---- cols : %pageid%, a, b headers : Data, Pole A, Pole B where : %class%=andortest sort : %pageid% ----
a výsledek.
To se tedy povedlo.
Teď zkusíme podmínku podle zadání
Zdrojový kód
---- datatable ---- cols : %pageid%, a, b headers : Data, Pole A, Pole B where : a=1 and : b>3 or : a=2 and : b<=2 sort : %pageid% ----
a výsledek.
To se také povedlo.
Jenže plugin má společnou databázi pro veškerá data a pokud chci použít něco jako jednotlivou tabulku, mohu použít pouze filtrování podle %class%. Podmínka v MySQL by tedy vypadala takto:
SELECT … WHERE class=`andortest` AND ((a=1 AND b>3) OR (a=2 AND b⇐2));
Zkusíme tedy podmínku podle tohoto zadání
Zdrojový kód
---- datatable ---- cols : %pageid%, a, b headers : Data, Pole A, Pole B where : %class%=andortest and : a=1 and : b>3 or : a=2 and : b<=2 sort : %pageid% ----
a výsledek.
To se také povedlo.
A teď zkusíme složitější podmínku. V MySQL by to vypadalo takto
SELECT … WHERE class=`andortest` AND ((a=1 AND (b=1 OR b=3)) OR (a=2 AND (b=2 OR b=4)));
Zdrojový kód
---- datatable ---- cols : %pageid%, a, b headers : Data, Pole A, Pole B where : %class%=andortest and : a=1 and : b=1 or : b=3 or : a=2 and : b=2 or : b=4 sort : %pageid% ----
a výsledek.
To se tedy nepovedlo a hlava mi to nebere.