![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 21.12.2007 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam zapytanie, którym pobieram z bazy z dwóch tabel dane:
i teraz, jeżeli w tabeli place nie ma rekordu to i tak w wyniku pokazuje jeden wiersz, ponieważ pobiera nazwiskoimie osoby z tabeli pracownicy. Później ładuję nagłówki tabelki i za pomocą while($row = mysql_fetch_array($rezultat)) ładuję wynik (w tym wypadku nazwiskoimie, reszta zawartości tabeli jest pusta. Jak przed załadowaniem nagówków tabelki sprawdzić, że idplac jest puste i nie ładować żadnego wiersza? Ten post edytował Jdwind 4.09.2012, 10:42:43 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Musisz zastosować złączenie warunkowe, tzw. "teta". Inaczej mówiąc jeśli chcesz by nie pobierało pustych pól to dodaj warunek id <> NULL.
Ten post edytował b4rt3kk 4.09.2012, 10:52:03 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 21.12.2007 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się (ale jako newbie oczywiście mogę się mylić), że nie chodzi o zapytanie - bo takim zapytaniem zawsze pobiorę przynajmniej imienazwisko. Chodzi raczej o to, żeby nie wyświetlić wyników, jeśli nie ma idplac dla danej osoby. Czyli najpierw puszczam zapytanie, potem sprawdzam, czy idplac <> "" i ewentualnie wyświetlam dane. Można to sprawdzić czymś w rodzaju mysql_num_rows dla jednego pola, ale zanim zapuszczę while($row = mysql_fetch_array($rezultat))?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 353 Pomógł: 50 Dołączył: 28.07.2005 Skąd: Łaziska Górne Ostrzeżenie: (0%) ![]() ![]() |
Zamień miejscami tabele w join. Place po lewej a pracownicy po prawej, ewentualnie użyj right join zamiast left
-------------------- Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej" "NIE kradnij, rząd nielubi konkurencji" |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 21.12.2007 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Zamieniłem LEFT na RIGHT i działa dokładnie tak, jak chciałem. Czy dobrze rozumiem, że obecna konstrukcja: ..FROM pracownicy pr RIGHT JOIN place pl ON (pr.idprac = pl.idprac).. mówi mi, że główne dane pobiera z tabeli place, a zależne z tabeli pracownicy, tak?
Bardzo dziękuję za pomoc, guziczek "Pomógł" wciśnięty oczywiście. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 353 Pomógł: 50 Dołączył: 28.07.2005 Skąd: Łaziska Górne Ostrzeżenie: (0%) ![]() ![]() |
Right join czyli łączy pasujące dane z lewej tabeli do tabeli po prawej. Prawa tabela jest tabelą główną.
-------------------- Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej" "NIE kradnij, rząd nielubi konkurencji" |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 21.12.2007 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję jeszcze raz za wyjaśnienie i pomoc.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:42 |