![]() |
mysql left join - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych) +--- Wątek: mysql left join (/thread-mysql-left-join) |
mysql left join - Radian - 15-08-2012 Od razu mówię, rekinem nie jestem w tej dziedzinie więc pytanie może być banalne i pewnie takie jest... $query = mysql_query('SELECT u.id, u.Imie, u.Nazwisko, u.szkolenie, w.id_uzytkownik as istnieje_wniosek FROM uzytkownik u LEFT JOIN wniosek w ON u.id=w.id_uzytkownik WHERE opiekun_id="'.$id_opiekuna.'" AND poziom="'.$poziom.'"') or die(mysql_error()); moje zapytanie jest powyżej. Chodzi o to, że użytkownik z tabeli "uzytkownik" może mieć wniosek w tabeli "wniosek", ale jeśli takowego wniosku nie posiada "istnieje" ma być równe NULL czyli w pętli while zwrócone zostaje uzytkownik wniosek id: 1 1 id:2 NULL id:3 3 wszystko tak jak potrzebuję, potem moge dać odpowiedni if i np. użytkownicy z wnioskami zostają nieaktywni w jakiś tam sposób np. <a href> zaś użytkownicy bez wniosków są specjalnie oznaczeni itd. itd. problem pojawia się w momencie gdy wszyskto wrzucam do funkcji i całość wygląda następująco function nazwa($id_opiekuna, $poziom){ $query = mysql_query('SELECT u.id, u.Imie, u.Nazwisko, u.szkolenie, w.id_uzytkownik as istnieje_wniosek FROM uzytkownik u LEFT JOIN wniosek w ON u.id=w.id_uzytkownik WHERE opiekun_id="'.$id_opiekuna.'" AND poziom="'.$poziom.'"') or die(mysql_error()); while($q=mysql_fetch_assoc($query)){ $uzytkownik[] = $q; } return $uzytkownik; } następnie w kodzie php chcąc wyświetlić listę użytkowników: $zaproszeni_uzytkownicy = $baza->nazwa($_SESSION['id'], "-1"); if($zaproszeni_uzytkownicy>0){ for($i = 0; $i < count($zaproszeni_uzytkownicy); $i++){ echo $zaproszeni_uzykownicy[$i]['istnieje_wniosek']; if($zaproszeni_uzykownicy[$i]['istnieje_wniosek']==NULL){ echo 'cos tam'; //tutaj wyswietlam uzytkownikow spelniajacych warunek } else{echo 'cos tam2'; //tutaj wyswietlam ich ale majac inny styl} } } klamry niektóre mogą nie być pozamykane (u mnie akurat takiego błedu nie ma, ale nie warto przeklejać tutaj całego pliku więc przykleiłem najważniejszą część, zaś echo i klamry zrobiłem tutaj na forum (mogłem o którejś zapomnieć). Co się dzieje? A no właśnie za każdym razem warunek NULL zostaje spełniony, dlaczego ? skoro istnieje użytkownik który nie spełnia warunku NULL ponieważ istnieje jego wniosek, print_r to potwierdza. |