Diskuze: Dotaz WHERE mysql
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Nerozumim logice.
sloupec id_skladu = ['all' OR 'sklad' OR 'prijem' OR 'vydej']
WHERE id_sklad='all' AND id_sklad='$hodnota'
Chapej, pokud je id_sklad jedna z hodnot, podle zadani, pak nemuze nabyvat
dvou hodnot soucasne, jako tlacis do podminky.
Mozna chces vybrat vse, kde je id_sklad=all a pridat jeste vse, kde
id_sklad=hodnota. V tom pripade by ale podminka byla
-- WHERE id_sklad='all' AND id_sklad='$hodnota'
WHERE id_sklad='all' OR id_sklad='$hodnota' -- nebo
WHERE id_sklad IN ('all', '$hodnota')
A co takhle?
WHERE id_sklad IN ('all', '$hodnota')
Než začnete implementovat ty IN klauzule, doporučuju si
prověřit jestli RDBS který používáte vyhledává přes IN
indexně ...
pokud použiji mysql_query tak mi to funguje ale nevím jak to nacpat do PDO
(použivám místní PDO)
zkoušel jsem toto ale to mi nejde
$dily = Db::queryAll('SELECT * FROM sklad WHERE del=0 AND id_skladu IN ('all',?) ' $
hodnota );
Děkuji za radu
Nemá to být například takto?
$dily = Db::queryAll('SELECT * FROM sklad WHERE del=0 AND id_skladu IN (\'all\',?) ' $
hodnota);
Ahoj,
pokud používáš místní PDO, tak to 'all' nesmíš mít přímo v tom
dotazu.
Udělej to takto:
$dily = Db::queryAll('SELECT * FROM sklad WHERE del = ? AND id_skladu IN (?, ?)', 0, 'all', $hodnota) ;
Takto to musí fungovat.
Zobrazeno 9 zpráv z 9.