Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Łączenie tabeli
Ayrox
post 3.07.2008, 17:46:03
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $zapytanie = "SELECT * from `friends` WHERE `zapraszajacy` = '$user' OR `zaproszony` = '$user' AND `status` = '1' 
  3.  
  4.  
  5.  
  6. ORDER BY 'kiedy' DESC LIMIT 0, 4;";
  7.  
  8.  
  9. $wynik = mysql_query($zapytanie);
  10.  
  11. while ($wiersz = mysql_fetch_array($wynik)) {
  12.  
  13. $zapraszajacy=$wiersz['zapraszajacy'];
  14. $zaproszony=$wiersz['zaproszony'];
  15.  
  16. if ($zapraszajacy == $user)
  17. {
  18. $jedenzmienna=$zaproszony;
  19. }
  20. else
  21. {
  22. $jedenzmienna=$zapraszajacy;
  23. }
  24.  
  25.  
  26.  
  27.  
  28.  
  29. $zapytanie = "SELECT `czyistniejezdjecie` FROM `uzytkownicy` WHERE `login`='$jedenzmienna';";
  30. $wynik = mysql_query($zapytanie);
  31.  
  32. $danee = mysql_fetch_array($wynik);
  33. $czyistniejezdjecie=$danee['czyistniejezdjecie'];
  34. }
  35. ?>




Nie wiem, jak zrobić żeby nie było to tak mało wydajne, jak jest teraz, czyli każdy "obrót" pętli to nowe zapytanie;

kolumne czyistniejezdjecie odczytuje z tabeli uzytkownicy gdzie struktura wyglada tak login|haslo|czyistniejezdjecie|ostatnielogowanie

z kolei kolumne zapraszajacy albo zaproszony, w zależności od tego który użytkownik zaprosi którego, nie zmienia to faktu że są znajomymi, odczytuje z tabeli friends

Wnioskuje na podstawie wcześniejszych wypowiedzi użytkowników, że najlepszym sposobem, będzie połączenie tych tabel, tylko tutaj mam problem, bo w tym przykładzie zapytanie jest dosyć złożone.

Pozdrawiam 

Ten post edytował Ayrox 3.07.2008, 17:48:17
Go to the top of the page
+Quote Post
kefirek
post 3.07.2008, 18:01:13
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Nie wiem czy te kolumny chciałeś złączyć ale zobacz tak
  1. $zapytanie = "SELECT t.*, u.* FROM `friends` t LEFT JOIN u `czyistniejezdjecie` ON t.login=u.zaproszony WHERE `zapraszajacy` = '$user' OR `zaproszony` = '$user' AND `status` = '1'";


Ten post edytował kefirek 3.07.2008, 18:01:57
Go to the top of the page
+Quote Post
Ayrox
post 3.07.2008, 18:02:12
Post #3





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 23.06.2008

Ostrzeżenie: (10%)
X----


Kefirku, byłbym Ci wdzięczny jakbyś mi napisał, co oznaczają poszególne te literki: t, u itd, bo trochę tego nie rozumiem tongue.gif
Go to the top of the page
+Quote Post
kefirek
post 3.07.2008, 18:07:22
Post #4





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Te literki to aliasy stasuje się zazwyczaj przy złączaniu tabel w celu ich odróżnienia możesz tam wpisać jakie chcesz litery np. a itp. Tylko musisz pamiętać ze t.*, to odnosi się do pierwszej tabeli a u.* do drugiej dlatego przy kolumnach z drugiej tabeli masz np. u.zaproszony bo pochodzi z drugiej tabeli
W skrócie po to są te litery by odróżnić tabele lub kolumny przy złączeniach

Ten post edytował kefirek 3.07.2008, 18:08:10
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:27