Autor Zpráva
Peet
Profil
Dobrý den potřebuji vědět jak mám udělat aby mi z daného sloupce vypsal vše.

SELECT * FROM table WHERE sloupec LIKE '%string%'

toto mi nefunguje potom jsem ještě zkoušel

SELECT * FROM table WHERE sloupec LIKE '%%'

to taky nefunguje.. nevíte někdo jak na to ?
Rellik
Profil
A co takhle:

SELECT * FROM table WHERE sloupec
Chceš přeci vypsat vše ne? ;-)

Případně NOT LIKE
Peet
Profil
ne mám obrovský dotaz kde se vyhledává spoustu věcí a potřebuji udělat co když nějaká proměnná nebude naplněná tak jak ji mám naplnit...

%string% - nejde
%% - nejde

další varianty ?


dotaz:

SELECT * FROM table WHERE sloupec1 LIKE '$sloupec1' AND sloupec2 LIKE '$sloupec2' AND sloupec3 LIKE '$sloupec3' AND ....

co když proměná sloupec2 bude prázdná ? čím ji mám naplnit aby vyhledal v sloupci 2 vše ?
Tori
Profil
Tak tam tu část se sloupcem2 vůbec nedávejte.
Peet
Profil
Ale když bude proměnná naplněna tak CO ? buďot vyhledá když v ní něco bude a když ne tak musí vyhledat vše..
Rellik
Profil
Peet:
co když proměná sloupec2 bude prázdná ? čím ji mám naplnit aby vyhledal v sloupci 2 vše ?
Přečti si co jsi napsal za dotaz a zkus si odpovědět... Ptáš se dost nesmyslně. Čím máš něco naplnit aby to našlo vše? Asi nějakým obsahem? Jakým? To bys měl vědět spíš ty ne?
Tak prostě prohledávej rovnou všechno i když nějak pořád nemůžu pochopit o co se vlastně snažíš...
Peet
Profil
Sakra lidi co je an tom složitého ..

představte si rozšířené vyhledávání kde máte např. 10 věcí dle kterých chcete prohledávat

dotaz bude potom těch 10 věcí pospojováno ANDem ..

okej.. ale co když jednu z věcí nebo dvě nebo tři to už je jedno uživatel nevyplní neboli zadá třeba v selectu --- Nerozhoduje ---

asi těžko když v dotazu bude WHERE sloupec='---nerozhoduje---' bude tento sloupec ignorovat.. proto před dotazem zjišťuji které proměnné nejsou naplněny a do těch musím dát něco na způsob %string% neboli cokolivstringcokoliv a tudíž jakoby ignoruje tento sloupec.. ale tohle nefunguje proto hledám jiné řešení
Tori
Profil
Peet:
Takhle nějak jsem to myslela:
$where = array();
if ($sloupec1) $where[] = "sloupec1 LIKE '$sloupec1%'"; // doplnit escapování
if ($sloupec2) $where[] = "sloupec2 > $sloupec2";
$sql = 'SELECT * FROM tabulka' . (!empty($where) ? ' WHERE '.implode(' AND ', $where) : '');

neboli zadá třeba v selectu --- Nerozhoduje ---
Tak danému prvku <option> dejte prázdnou hodnotu.
Peet
Profil
no řekl bych že je to příliš složité řešení pro takovou věc..

musí existovat něco přes ten regulární výraz který vlastně bude obsahovat vše..


když mu dám prázdnou hodnotu..

tak bude prohlédavat jen ty s prázdnou hodnotou.. což je přesný opak toho co požaduji..
Tori
Profil
Peet:
%% - nejde
Teď jsem zkoušela a fungovalo mi to, sloupec LIKE '%' i LIKE '%%' našlo všechny řádky v tabulce. Jen mi to připadá zbytečné, aby databáze musela vyhodnocovat podmínku, která bude splněna vždy (ale možná je MySQL optimizer dostatečně mazaný a bude ji ignorovat, netuším).
Peet
Profil
aj děkuji za pomoc.. chyba byla jinde.. omlouvám se

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0