Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie pomiędzy dwoma tabelami
CzarnyGsm
post
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?
  1. SELECT `wallpapers` . * , `users`.`id` AS `id_user` , `users`.`login`
  2. FROM `wallpapers`
  3. INNER JOIN `users` ON wallpapers.user_id = users.id
  4. WHERE (
  5. category_id = '2'
  6. )
  7. AND (
  8. width = '101'
  9. )
  10. AND (
  11. height = '80'
  12. )
  13. ORDER BY `id` DESC



Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
droslaw
post
Post #2





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:
  1. SELECT `wallpapers` . * , `users`.`id` AS `id_user` , IF(`users`.`id` IS NOT NULL, `users`.`login`, 'Użytkownik usunięty') AS `user_login`
  2. FROM `wallpapers` LEFT JOIN `users` ON `users`.`id`=`wallpapers`.`user_id` WHERE ...;

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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 18:11