Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z IFem i zmiennymi oraz 2 pytania
spenalzo
post
Post #1





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Mam takie zapytanko (fragment):
[sql:1:9c6dbbb2b0]SELECT ...
IF(LOCATE('jakis',LOWER(post_text))>1, @licz:=@licz+1,0),
IF(LOCATE('inny',LOWER(post_text))>1, @licz:=@licz+1,0),
@stosunek:=(@licz/LENGTH(post_text)) ...[/sql:1:9c6dbbb2b0]
i to nie działa, ponieważ czasami którykolwiek z tych IFów zwróca NULL :? co mnie dziwi troche..
Pokombinowałem troche i wymyśliłem sobie tak:
[sql:1:9c6dbbb2b0]SELECT ...
IF(LOCATE('jakis',LOWER(post_text))>1, IF(ISNULL(@licz)=1,@licz:=1,@licz:=@licz+1),0),
IF(LOCATE('inny',LOWER(post_text))>1, IF(ISNULL(@licz)=1,@licz:=1,@licz:=@licz+1),0),
@stosunek:=(IF(ISNULL(@licz),0,@licz)/LENGTH(post_text)) ...[/sql:1:9c6dbbb2b0]

Czy to jest poprawne??

Dodatkowe pytania - czy sortowanie po zmiennej jest poprawne?
oraz czy jest coś co pozwala sortować naturalnie - bo teraz wiersze sie ukłądają mniej wiecej tak (przy ORDER BY @stosunek):
3.xx
2.xx
10.xx
0.xx
itd - a bym chciał żeby było naturalnie posortowane... :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adwol
post
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
i to nie działa, ponieważ czasami którykolwiek z tych IFów zwróca NULL :? co mnie dziwi troche..

Jest to całkowicie poprawne zachowanie, ponieważ w logice SQLowej:
Kod
NULL + 1 = NULL

Jeśli więc @licz jest niezainicjowana (ma wartość NULL) dodawanie do niej liczby nie zmienia jej wartości.
Cytat
Pokombinowałem troche i wymyśliłem sobie tak:
[sql:1:a2a019da85]SELECT ...
IF(LOCATE('jakis',LOWER(post_text))>1, IF(ISNULL(@licz)=1,@licz:=1,@licz:=@licz+1),0),
IF(LOCATE('inny',LOWER(post_text))>1, IF(ISNULL(@licz)=1,@licz:=1,@licz:=@licz+1),0),  
@stosunek:=(IF(ISNULL(@licz),0,@licz)/LENGTH(post_text)) ...[/sql:1:a2a019da85]
Czy to jest poprawne??

Jeśli pierwszy kod (pomijając te NULLe) jest poprawny, to ten też (pomijając, że jest chyba ciut nadmiarowy).
Cytat
Dodatkowe pytania - czy sortowanie po zmiennej jest poprawne?

Jeśli występuje sama to chyba nie bardzo, bo wartość zmiennej będzie stała w całym zapytaniu i sortowania tak naprawdę nie będzie.
Cytat
a bym chciał żeby było naturalnie posortowane

Tzn. jak? Liczbowo czy leksykograficznie?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 15:41