Složítě WHERE pomocí Nette\Database

Notice: This thread is very old.
simPod
Member | 374
+
0
-

Chtěl bych pomocí Nette\Database udělat něco na způsob takovéhohle složitého WHERE query:

SELECT * FROM `table` WHERE (`x` > 1 AND `y` < 5) OR (`x` > 1 AND `y` > 5)

Je to možné? V docs jsem nic takového nenašel. Díky

Oli
Member | 1215
+
0
-

Pokud jsi se nepřeklepl, tak by to šlo asi takhle:

$this->connection->table('table')->where('x > ?', 1)->where('y < ? OR y > ?', 5, 5); // nebo
$this->connection->table('table')->where('x > ?', 1)->where('y <> ?', 5); //nebo
$this->connection->table('table')->where('x > ? && y <> ?', 1, 5);
simPod
Member | 374
+
0
-

Díky. A pokud bych to modifikoval třeba na:

SELECT * FROM `table` WHERE (`x` > 1 AND `y` < 5) OR (`x` > 3 AND `y` > 4)

nedošlo mi, že to ty stejné hodnoty takto ulehčí.

Nebo třeba ještě:

SELECT * FROM `table` WHERE (`x` > 1 AND `y` < 5) OR ((`x` > 3 AND `x` < 8) AND `y` > 4)

Jde mi o to, jak do sebe zanořit více podmínek s AND a OR.

David Matějka
Moderator | 6276
+
0
-

jednotlive ->where se vzdy spojuji pomoci AND, pokud tam chces pouzit OR, budes to musel vypsat cele

->where('(x > ? AND y < ?) OR ((x > ? AND x < ?) AND y > ?)', 1, 5, 3, 8, 4);
simPod
Member | 374
+
0
-

ok, díky moc