Autor | Zpráva | ||
---|---|---|---|
Vladimír Iljič Profil * |
#1 · Zasláno: 6. 8. 2010, 22:08:04
Dobrý den,
poprosím o radu co mám v tomto dotazu špatně? select * from mesic where day='' and id between 5 and 15 potřebuji vybrat vše z tabulky červen kde sloupec day je prázdný a zároveň hodnota sloupce id je mezi 5 a 15ti |
||
Keeehi Profil |
#2 · Zasláno: 6. 8. 2010, 22:29:23
dotaz by měl být správně, pokud:
1) sloupec id je číselného typu 2) sloupec day je NOT NULL pokud není 1 splněna, pak id between '5' and '15' - ale nevím, jak je to s podporou between u řetězců pokud není 2 splněna, pak day is null Jsou v tabulce data, které odpovíají této podmínce? |
||
Vladimír Iljič Profil * |
#3 · Zasláno: 7. 8. 2010, 00:19:21
Keeehi:
no ono právě že day může obsahovat hodnotu ale také nemusí, jinak vše ostatní odpovídá tj. id je int. :-) |
||
Kajman_ Profil * |
#4 · Zasláno: 7. 8. 2010, 00:28:03
day může obsahovat hodnotu ale také nemusí
Pokud chcete hledat id i když je day null, tak třeba takto where ifnull(`day`,'')='' and |
||
Vladimír Iljič Profil * |
#5 · Zasláno: 7. 8. 2010, 00:36:19
takže dotaz ted vypadá takto:
select * from $mesic_tab where ifnull(`day`,'')='' and id between $od and $do ale mysql hlasi chybu: right syntax to use near 'where ifnull(day,'')='' and id between 3 and 8' at line 1 |
||
Keeehi Profil |
#6 · Zasláno: 7. 8. 2010, 00:41:55
Vladimír Iljič:
problém je tento: day='' není to samé jako day is null příklad: sloupec1 - NULL sloupec2 - NOT NULL INSERT INTO tabulka(sloupec1) VALUES (null); sloupec1 je prázdný, má null do sloupece 2 se pokoušíme nic neuložit, protože je to však zakázáno (NOT NULL - nesmí se nevložit) vloží se prázdný řetězec SELECT * FROM tabulka WHERE sloupec1='' - nevrátí nic, protože sloupec1 je prázdný (null) SELECT * FROM tabulka WHERE sloupec2='' - vrátí uložený řádek SELECT * FROM tabulka WHERE sloupec1 is null - vrátí uložený řádek SELECT * FROM tabulka WHERE sloupec2 is null - nevrátí nic, protože sloupec2 není null ale je to prázdný řetězec |
||
Kajman_ Profil * |
#7 · Zasláno: 7. 8. 2010, 01:37:40
Co je v $mesic_tab?
|
||
Vladimír Iljič Profil * |
#8 · Zasláno: 7. 8. 2010, 14:55:03
v proměnné $mesic_tab tab je měsíc (leden nebo únor,březen atd.) tam chyba není poněvadž to by mysql hlásilo table doesn't exists ne?
Keehi: „problém je tento: day='' není to samé jako day is null“ to je sice pěkné, ale neprišel jsem na to jak mi to vše pomůže vyřešit muj problém :-) |
||
Vladimír Iljič Profil * |
#9 · Zasláno: 7. 8. 2010, 15:14:21
ono by to totiž asi fungovalo ale toto se zdá být dle hlášky spíš chybou v syntaxi nemám pravdu?
|
||
Keeehi Profil |
#10 · Zasláno: 7. 8. 2010, 15:42:06
Vladimír Iljič:
Vypiš si výsledný sestavený dotaz. echo "select * from $mesic_tab where ifnull(`day`,'')='' and id between $od and $do "; |
||
Vladimír Iljič Profil * |
#11 · Zasláno: 7. 8. 2010, 16:37:20
vysledek echa:
select * from cerven where ifnull(`day`,'')='' and id between 3 and 7 |
||
Vladimír Iljič Profil * |
#12 · Zasláno: 7. 8. 2010, 16:42:50
Omlouvám se všem chyba mezi klávesnicí a židlí jak jinak - $mesic_tab byla definována až po výše uvedeném dotazu, ještě jednou se omlouvám kdo můžete tak to prosím smažte
|
||
Časová prodleva: 14 let
|
0