Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skomplikwoane zapytanie
Bojakki
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Mam spory klopot z zapytaniem. Otoz mam tabele z 4 kolumnami [id, name1, name2, name3]. Minimum jedno pole name nie jest puste, z tym, ze jak np. jest 1 uzupelnione to niekniecznie musi byc to pole 'name1', rownie dobrze moga byc inne, a to nie.

I teraz chialem przeszukac te 3 pola w poszukiwaniu wyrazu na litere 'x', gdzie x to dowolna litera z alfabetu. Caly szkopul tkwi w tym, ze jezeli uzupelnione jest pole 'name1' to zeby bralo pod uwage tylko to pole, a pzostale 2 nie, jezeli 'name1' nie jest uzupelnione to zeby bralo pod uwage 'name2', a jezeli 'name1' i 'name2' nie jest uzupelnione to zeby bralo pod uwage 'name3', a pzosotale pola nie.

Nie wiem czy sie da w ogole cos takiego napisac, a czy jednym zapytaniem to w ogole juz watpie:/

Wiem jedynie jak wyswietlic prawidlowe pole (czyli to, ktore powinno byc przeszukiwane), ale jak to polaczyc z wyszukiwaniem to juz nie.
  1. <?php
  2. if($name1!= "")
  3. echo $name1;
  4. if($name1 == "" && $name2 != "")
  5. echo $name2;
  6. if($name1 == "" && $name2 == "" && $name3 != "")
  7. echo $name3;
  8.  
  9. ?>


moze ktos pomoc? Z gory dziekuje za wszelka pomoc.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




troche zakrecone zapytanie nasmazylem, ale dziala, przynajmniej u mnie. pewnie mozna prosciej, ale akurat nie mam czasu pomyslec bardziej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Przyjalem ze pola nie wypelnione maja wartosc NULL
  1. SELECT *
  2. FROM tabela WHERE IF(name1 IS NOT NULL,name1 LIKE 'x%',false) OR IF(name1 IS NULL AND name2 IS NOT NULL,name2 LIKE 'x%',false) OR IF(name1 IS NULL AND name2 IS NULL AND name3 IS NOT NULL,name3 LIKE 'x%',false)
Go to the top of the page
+Quote Post
Bojakki
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Przerobilem to na swoje potrzeby i wyswietla mi sie blad:
  1. <?php
  2.  
  3. $index = mysql_query("select * from gb_catalog where
  4. if (pol is not '', pol like '".strtoupper($litera)."%' ,false) or
  5. if (pol is '' and eng is not '', eng like '".strtoupper($litera)."%' ,false)
  6. if (pol is '' and eng is '' and orig is not '', orig like '".strtoupper($litera)."%' ,false)");
  7.  
  8. while($row = mysql_fetch_row($index)) //tego sie czepia
  9. {
  10. if ($row[4] == $plat_name)
  11. echo '$row[0]';
  12. }
  13.  
  14. ?>


Cytat
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/gb/public_html/index.php on line 69
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




kiepsko przerabiales. zjadles jednego ora miedzy 2 a 3 ifem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozatym nie is '' a = ''
is stosuje sie do null
Go to the top of the page
+Quote Post
Bojakki
post
Post #5





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Cytat(nospor @ 2006-01-03 13:55:45)
kiepsko przerabiales. zjadles jednego ora miedzy 2 a 3 ifem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
pozatym nie is '' a = ''
is stosuje sie do null

Dzieki, dziala mi to swietnie:)

Mam tylko problem z posegregowaniem wynikow tak by byly alfabetycznie, bo jak posegreguje je wg. jakiejs kolumny w tabelii to niestety dobrego efektu nie otrzymam:/
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. SELECT *, IF(name1 IS NOT NULL, name1, IF(name2 IS NOT NULL, name2,name3)) kol
  2. FROM tabela WHERE IF(name1 IS NOT NULL,name1 LIKE 'x%',false) OR IF(name1 IS NULL AND name2 IS NOT NULL,name2 LIKE 'x%',false) OR IF(name1 IS NULL AND name2 IS NULL AND name3 IS NOT NULL,name3 LIKE 'x%',false) ORDER BY kol
No i se dostosuj do siebie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 15:26