Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

Diskuze: Dotaz WHERE mysql

Ostatní jazyky SQL SQL a databáze Dotaz WHERE mysql

Aktivity (1)
Avatar
michal Čepelák:19. září 7:31

Zdravím,
mám tabulku kde mám sloupec id_skladu kde jsou hodnoty all, sklad, prijem,vydej.
A potřeboval bych udělat přes select abych vybiral přes WHERE id_sklad=all AND id_sklad='$hodnota' ale takle mi to nechce fugnovat. Potřebuji aby id_sklad=all bylo vždy a k tomu to vybiralo z formuláře podle toho co je zadáno v $hodnota (sklad, prijem, vydej).

Děkuji za rady

 
Odpovědět 19. září 7:31
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:19. září 8:07

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')
Editováno 19. září 8:08
 
Nahoru Odpovědět  +2 19. září 8:07
Avatar
Odpovídá na michal Čepelák
Daniel Horák:19. září 8:12

A co takhle?

WHERE id_sklad IN ('all', '$hodnota')
 
Nahoru Odpovědět 19. září 8:12
Avatar
Michal Haňáček:19. září 8:24

Než začnete implementovat ty IN klauzule, doporučuju si prověřit jestli RDBS který používáte vyhledává přes IN indexně ;-) ...

Nahoru Odpovědět 19. září 8:24
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
michal Čepelák:19. září 9:01

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
 
Nahoru Odpovědět 19. září 9:01
Avatar
Jirka
Člen
Avatar
Odpovídá na michal Čepelák
Jirka:28. září 19:48

Nevadí tomu ty stejné uvozovky?

Nahoru Odpovědět 28. září 19:48
Kdo nic nedělá, nic nezkazí.
Avatar
Jirka
Člen
Avatar
Odpovídá na michal Čepelák
Jirka:28. září 20:02

Nemá to být například takto?

$dily = Db::queryAll('SELECT * FROM sklad WHERE del=0 AND  id_skladu IN (\'all\',?) ' $
hodnota);
Nahoru Odpovědět 28. září 20:02
Kdo nic nedělá, nic nezkazí.
Avatar
petr.jouza
Člen
Avatar
Odpovídá na michal Čepelák
petr.jouza:30. září 8:54

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.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 30. září 8:54
Avatar
Odpovídá na petr.jouza
michal Čepelák:30. září 19:56

Děkuji už to funguje

 
Nahoru Odpovědět 30. září 19:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.