Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Łączenie dwóch tabel
JamalBIG
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


Witam

Mam problem z połączeniem dwóch tabel których budowa przedstawia się następująco:

-- wpisy
id | user_id | tekst |
-----------------------
1 | 2 | xxxx |
2 | 22 | yyyy |

-- users

user_id | znajomy_user_id |
-----------------------
1 | 22 |
2 | 2 |

Chcę wyświetlić dane z tabeli wpisy gdzie user_id = np 2 oraz dane z tabeli wpisy gdzie user_id = znajomy_user_id (pisząc 'słownie' aby wyświetlone zostały dane z tabeli wpisy określonego użytkownika oraz jego znajomych... Stworzyłem poniższą komendę ale nie wyświetla tego czego chce....
  1. SELECT wpisy.* FROM users, wpisy WHERE users.user_id=2 AND wpisy.user_id=users.znajomy_user_id
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


ciężko podać precyzyjną odpowiedź bo nie wiem co dokładnie chcesz uzyskać, jak wyświetlić itd, bo sytuacje mogą być różne

ale założę, że jesteś na podstronie użytkownika, jego ID pobieramy z url, i chcemy pobrać jego wpisy oraz wpisy użytkownika

UWAGA, to co Ci podałem to nie jest działający przykład, tylko takie mniej więcej zobrazowanie mechanizmu, musisz to przeanalizować i napisać skrypt na podstawie tego, pamiętaj też, że jak odbierasz zmienne z $_GET, $_POST itd, to zanim wstawisz do zapytania przepuszczasz przez mysql_real_escape_string();

  1. <?php
  2.  
  3. $user_id = $_GET['user_id'];
  4.  
  5. //pobieramy znajomych
  6. $friend_ids = array(); //do tej tablicy wrzucimy ID znajomych
  7. $friend_ids[] = $user_id; // do tablicy z ID znajomych dokładamy ID użytkownika głownego bo jego wpisy też chcemy dostać
  8. $sql = "SELECT znajomy_user_id FROM users WHERE user_id = '{$user_id}'";
  9.  
  10. while($row = mysql_fetch_assoc())
  11. {
  12. $friend_ids[] = $row['znajomy_user_id'];
  13. }
  14.  
  15. if(count($friend_ids))
  16. {
  17. $query_ids = implode(" , ", $friend_ids); // składamy wszystkie numery ID do postaci w, ktorej łatwo wstawimy do zapytania WHERE user_id IN(1,2,3,4)
  18.  
  19. // zakładam ze w tabeli user jest jeszcze pole user_name zawierajace nazwe uzytkownika, uzejemy tutja LEFT JOIN aby do kazdego wpisu pobrac od razu nazwe uzytkownika
  20.  
  21. $sql = "SELECT a.id, a.user_id, a.tekst, b.user_name FROM wpisy a LEFT JOIN users b ON a.user_id = b.user_id WHERE a.user_id IN($query_ids)";
  22. while($row = mysql_fetch_assoc())
  23. {
  24. //tutaj odbierasz wpisy
  25. }
  26. }
  27.  
  28.  
  29. ?>
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: 8.10.2025 - 21:35