tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

dibifluent a zavorkovane where???

před 6 lety

flexroad
Člen | 120
+
0
-

Ahoj,

pouzivam dibi 2.0.1 a potreboval bych poradit, jak pridat do „where“ casti dotazu zavorky mezi jednotlive operatory.

Potreboval bych neco takoveho jako:

<?php
SELECT * FROM tabulka WHERE (jmeno ='test1' OR jmeno ='test2') AND (prijmeni ='test3' OR prijmeni='test4')
?>

pokud pouziju toto,

<?php
        $x1 = array('jmeno =%s','test1');
        $x2 = array('jmeno =%s','test2');
        $group1 = array($x1, $x2);

        $x3 = array('prijmeni =%s','test3');
        $x4 = array('prijmeni =%s','test4');
        $group2 = array($x3, $x4);

        $q->where(array('%or'=>$group1));
        $q->where(array('%or'=>$group2));
        $q->test();
?>

vrati to: WHERE (` = (jmeno ='test1') OR (jmeno ='test2')) AND (` = (prijmeni =‚test3‘) OR (prijmeni=‚test4‘))

Jak odstranit ten retezec (`` = ) zacinajici uvnitr zavorky???

Diky za cokoliv

FlexRoad

před 6 lety

Milo
Nette Core | 1066
+
0
-
$q->where('(%or)', $group1);
$q->where('(%or)', $group2);

před 6 lety

flexroad
Člen | 120
+
0
-

Diky Milo, jsi džinius. :D Kdo by to byl rekl. Neexistuje nahodou k tomu zapisu dibifluent nekde nejaka rozumnejsi dokumentace? Budu ted asi nad dibifluent travit dost casu…a snad pujdou bez vetsich problemu definovat i podobne radosti jako je treba:

<?php
select pan.name,max(upal.time)
, (sum(case when (upal.updatetype=4) THEN 1 ELSE 0 END)-sum(case when (upal.updatetype=6) THEN 1 ELSE 0 END) ) totalusernotes
, (SUM(case when (upal.updatetype=18) THEN 1 ELSE 0 END)-SUM(case when (upal.updatetype=19) THEN 1 ELSE 0 END)) totalcandidates
, (sum(case when (upal.updatetype=8) THEN 1 ELSE 0 END)-sum(case when (upal.updatetype=10) THEN 1 ELSE 0 END)) totalactions
?>

nebo treba

<?php
select (case when (ro.suffix ='%' ) then round(ifnull(r.value*100,null),2) else round(ifnull(r.value,null),2) end) as value, c.name name, c.type type, ro.id id, unix_timestamp( c.startdate) startdate, c.durationtype durationtype, ro.variancetype variancetype
?>

:)