Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Instrukcja warunkowa?
Forum PHP.pl > Forum > Bazy danych > MySQL
Krisu
Witam,
dawno mnie nie było na tym forum, ale pojawił się problemik i byłbym rad, gdybyście mi coś doradzili w tej sprawie.

Mam bazę z testami, użytkownik rozwiązuje najpierw jeden test a potem drugi, ale wszystko jest oparte na troszkę niezaplanowanej bazie danych.
Musiałem to wszystko zrobić w jednym zapytaniu gdyż zależy mi na sortowaniu i wyciągnięciu na raz wszystkich potrzebnych danych. Zapytanie w 100% działa jednak jeśli nie znajdzie, któregoś z testów (uczestnik go jeszcze nie rozwiązał) to zwraca null, a przez to gdy dodaję w zapytaniu wartości z obu testów to niestety nie zlicza mi ich, co jest logiczne. Moje pytanie brzmi tak:

Jak zrobić, żeby za wartość null zapytanie przyjmowało 0? smile.gif
Zastanawiałem się nad wrzuceniem warunku, że jeśli null to 0 ale może doradzicie coś odpowiedniejszego? Nie wiem też jak miałbym to zaimplementować smile.gif

  1. SELECT user.uid, user.name, user.surname,
  2.  
  3. (SELECT points FROM results WHERE tid = '$active_tid1' AND uid = user.uid) points,
  4. (SELECT exam_sec FROM results WHERE tid = '$active_tid1' AND uid = user.uid) exam_sec,
  5. (SELECT points FROM results WHERE tid = '$active_tid2' AND uid = user.uid) points2,
  6. (SELECT exam_sec FROM results WHERE tid = '$active_tid2' AND uid = user.uid) exam_sec2,
  7.  
  8. ((SELECT points FROM results WHERE tid = '$active_tid1' AND uid = user.uid) + (SELECT points FROM results WHERE tid = '$active_tid2' AND uid = user.uid)) punkty,
  9. ((SELECT exam_sec FROM results WHERE tid = '$active_tid1' AND uid = user.uid) + (SELECT exam_sec FROM results WHERE tid = '$active_tid2' AND uid = user.uid)) czasy
  10.  
  11. FROM user WHERE user.auth = '1' AND user.active = '1' ORDER BY (points+points2) DESC, (exam_sec+exam_sec2) ASC
zaajcu
ja bym przerobil to zapytanie na join'y a do sumowanie żeby zamienić null na 0 to możesz użyć ifnull()

http://dev.mysql.com/doc/refman/5.0/en/con...function_ifnull

np
select sum(2+IFNULL(null, 0) )
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.