Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Wyświetlanie rekordów
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Mam 2 tabele w bazie:

Wiadomosci:
id_w
od_kogo
do_kogo
tekst

Userzy:
id_u
nazwa

Kiedy user wysyła wiadomość (np. user o nazwie AAA i id=1 do usera BBB o id=2) to w tabeli wiadomości zostanie dodany rekord o wartości pól: od_kogo=1 i do_kogo=2:
  1. INSERT INTO wiadomosci VALUES( NULL , '1' , '2' , 'tekst' )


Moje pytanie brzmi jak wyświetlić te wiadomości tak aby zamiast id userów pojawiły się ich nazwy. Normalnie nie miałem z tym problemów bo robiłem to tak:
  1. SELECT userzy.nazwa , wiadomosci.tekst FROM wiadomosci , userzy WHERE userzy.id = wiadomosci.od_kogo
Ale tutaj jest problem bo przecież pola od_kogo i do_kogo oba są wartościami id z tabeli userzy. Jak skonsrtuować zapytanie aby SQL nie zgłupiał?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




LEFT JOIN (IMG:style_emoticons/default/winksmiley.jpg)

  1. SELECT w.id_w, u1.nazwa AS od, u2.nazwa AS do, w.tekst FROM wiadomosci w LEFT JOIN userzy u1 ON w.od_kogo = u1.u_id LEFT JOIN userzy u2 ON w.do_kogo = u2.u_id ORDER BY w.id_w DESC

To wyświetli Ci wszystkie wiadomości w bazie od najnowszej do najstarszej. Ale jeśli chcesz znać wszystkie kolumny z tabeli wiadomości to użyj w.* bo to poda też id userów, co może Ci się przydać gdy będziesz chciał podpiąć link z czymś co wiąże się z pisaniem odpowiedzi czy innych operacji wymagających posiadania id.

Post powyżej też daje odpowiedź, ale każde podzapytanie sprawi niepotrzebny narzut czasu. A teraz wyciągnij z bazy kilkadziesiąt choćby wiadomości, gdy do każdego wiersza wywołujesz 2 podzapytania. To staje się zwyczajnie nieoptymalne i czasochłonne.

Ten post edytował thek 23.08.2009, 12:32:11
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ale co to jest u1 i u2? Rozumiem ze user1 i user2 ale jak to ma SQL rozpoznac skoro nie odwoluje sie to do nazwy kolumny?
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: 3.10.2025 - 00:05