• @ALL má oprávnění číst
  • @Celostatni forum má oprávnění nahrávat
  • @Registrovani priznivci má oprávnění nahrávat

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.:-(

© Piráti, 2016. Všechna práva vyhlazena. Sdílejte a nechte ostatní sdílet za stejných podmínek. Podmínky použití.