====== 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.
---- datatable ----
cols : %pageid%, a, b
headers : Data, Pole A, Pole B
where : %class%=andortest
sort : %pageid%
----
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.
---- 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%
----
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.
---- 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%
----
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.
---- 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%
----
To se tedy nepovedlo a hlava mi to nebere.:-(