Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Warunkowe wykonanie czesci zapytania
Forum PHP.pl > Forum > Przedszkole
Bojakki
Mma takie zapytanie:

  1. $query = mysql_query("SELECT news.title, news.news, news.object<span style="font-weight: bold;">, object.name
  2. FROM news,
  3. object
  4. WHERE news.id = $wsk<span style="font-weight: bold;"> AND news.object = object.id");
  5. $news = mysql_fetch_row($query);


Co zrobic by pogrubiona czesc zapytania wykonywala sie tylko wtedy gdy wartosc 'news.object' jest rozna od zera?
piotrekkr
  1. $query = mysql_query("SELECT news.title, news.news, news.object, object.name
  2. FROM news,
  3. object
  4. WHERE news.id = $wsk AND news.object = object.id" AND news.object!=0);
  5. $news = mysql_fetch_row($query);


o to chodzi czy zle zrozumialem questionmark.gif
Bojakki
Nie o to bo tutaj po prostu calkowicie minie rekord tam gdzie to pole jest rowne 0, a mi chodiz o to zeby wedy nie wykonalo calosci zapytania (tej pogrubionej czesci)
Master Miko
Po co bawić się w to na poziomie SQL, jeżeli można to 1000000000000 razy łatwiej zrobić na poziomie php!

Są jakieś specjalne powody? Możesz pokazać kod php?
Jeśli są... to podaj snitch.gif
orson
witam ...

oczywiście że są ... wydajność, wygoda, wyraźne oddzielenie danych od logiki - od db oczekujesz gotowego wyniku, a nie czegoś do obrabiania ...

o takie coś chodzi questionmark.gif jak coś to spróbuj z RIGHT JOIN
  1. SELECT news.title, news.news, news.object, object.name
  2. FROM news
  3. LEFT JOIN object ON (news.object = object.id AND news.id = $wsk)


pozdrawiam
Master Miko
Jak bardzo obciążają MySQL pytania tego typu? Może to dziwne pytanie, ale pierwszy raz się spotykam z takim śmiesznym rozwiązaniem smile.gif
a samo w sobie jest rzeczywiście jest całkiem logiczne.

a btw, do czego i w jakich przypadkach używa się takich zapytań? Moja wiedza jest baaaardzo mizerna jeśli chodzi o Mysql tongue.gif
orson
witam ...

dlaczego śmiesznych questionmark.gif to jest standardowe, zgodne z sql zapisanie joina ... wydajnościowo jest pewnie to samo co wymienienie po przecinku ale do ON można dodać więcej warunków i taki zapis jest czytelniejszy - można wymienić warunki przy nazwie tabeli

@Bojakki: chcesz żeby object.name zawierał nazwę tylko jeżeli istnieje on w tabeli objects questionmark.gif to chyba nawet twoje zapytanie to robiło ... ale masz w nim byka ... cudzysłów przed ostanim AND nie wywala ci czasem błędu questionmark.gif

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.