![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 2 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Męczę się z wyświetleniem rekordów z dwóch różnych tabel, gdzie niektóre rekordy są powiązane. Mam dwie tabele: 1. Users id , login, ... 2. Wallpapers id, category_id, width, height, user_id, ... Na podstawie tego chciałbym wyświetlić tapety z tabeli wallpapers dla zadanych parametrów i pobrać przy tym login użytownika z tabeli users, który dodał tapetę. Niestety, ale wiele osób ma już usunięte konto i wiele tapet prowadzi do id użytkowników już nieistniejących. Poniższe zapytanie wyświetli tylko tapety dla których istnieje użytkownik w tabeli users. Czy da się tak skonstruować zapytanie tak aby dla nie istniejącego id użytkownika do wartości kolumny login przypisywało np. "konto usunięte"? Jeśli tak to jak wyglądałoby takie zapytanie?
Z góry dziękuję za pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 2 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
No niestety do końca nie chce działać. Mysql wypluwa nadal te same rekordy tzn. rekordy, dla których istnieją w bazie użytkownicy users o zadanym user_id z tabeli wallpapers. Jeżeli usunę RIGHT JOIN `users` ON `wallpapers`.`user_id` = `users`.`id` oraz IF( `users`.`id` IS NOT NULL , `users`.`id` , '0' ) AS `id_user` , IF( `users`.`login` IS NOT NULL , `users`.`login` , 'brak-loginu' ) AS `login_user` wyświetli mi np. 54 rekordy, a dla poniższego zapytania niestety wypluwa 34, co oznacz, że pętla IF nie działa prawidłowo. Dlaczego to zapytanie nie działa tak jak powinno? Zapewne popełniłem jakiś błąd, ale nie mogę znaleźć. Czy warunek w JOIN nie jest przyczyną tego i jak go rozwiązać? Może lepszym wyborem będzie użycie UNION, tylko jak to połączyć?(IMG:style_emoticons/default/snitch.gif) Z góry dziękuję za pomoc.
Ten post edytował CzarnyGsm 7.02.2012, 13:41:14 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd powinno być LEFT JOIN:
IF tu nie ma nic do znaczenia, decyduje tylko co wstawić w w danym polu w zależności czy jest spełniony warunek czy nie. Unie się do tego nie nadają. Służa łączynia wyników zapytań, to znaczy tworzysz unię kilku tabel i dostajesz wyniki tak jakby pochodziły z jednej tabeli. Ten post edytował droslaw 7.02.2012, 17:41:28 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 16:03 |