Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie do bazy danych
CzarnyGsm
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

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


Witam serdecznie,

Zaprojektowałem bazę danych, która przetrzymuje dane z relacjami między użytkownikami.
Tabela: Friendship
Kolmuny: inviting_user_id , invited_user_id, status , sending_time, acceptance_time
Stowarzyłem zapytanie zwracające rekordy przyjaciół dla użytkownika XYZ, których sam osobiście zaprosił do grona przyjaciół i oni zaakcpetowali jego zaproszenie. Tylko bo kilku dnia olśniło mnie, że przecież przyjaciółmi użytkownika XYZ mogą być też osoby, które same zaprosiły XYZ.
Pytanie jest następujące w jaki sposób mogę dodać do mojego bieżącego zapytania(nie tworząc nowego), aby pobrało mi również przyjaciół, gdzie ja jestem invited_user_id ?
Moje aktualne zapytanie:
  1. SELECT
  2. `friendship`.*,
  3. `users`.`login`,
  4. `users`.`name`,
  5. `users`.`surname`,
  6. FROM `friendship`
  7. LEFT JOIN `users` ON friendship.invited_user_id = users.id
  8. WHERE (inviting_user_id = '3') AND (STATUS = 1)
  9. ORDER BY `users`.`surname` ASC


Z góry dziękuję za pomoc.

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





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

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


Dzięki bardzo za odpowiedź i zainteresowanie tematem. Przy tym zapytaniu wiązanie jest identyczne jak u mnie friendship.invited_user_id = users.id,
także zwróci to samo. A do tego w where dałeś inviting_user_id = '3' AND invited_user_id='3' więc nic tam to zapytanie nie zwróci, gdyż nie ma takiej możliwości aby w bazie był rekord że osoba zapraszająca zaprasza samą siebie.
Masz może inny pomysł? Wydaje mi sie, że zapytanie z UNION (łączeniem tabel) rozwiązałoby ten problem.

  1. SELECT
  2. `friendship`.*,
  3. `users`.`login`,
  4. `users`.`name`,
  5. `users`.`surname`,
  6. FROM `friendship`
  7. LEFT JOIN `users` ON friendship.invited_user_id = users.id
  8. WHERE (inviting_user_id = '3') AND (STATUS = 1)
  9. ORDER BY `users`.`surname` ASC
  10. UNION
  11. SELECT
  12. `friendship`.*,
  13. `users`.`login`,
  14. `users`.`name`,
  15. `users`.`surname`,
  16. FROM `friendship`
  17. LEFT JOIN `users` ON friendship.inviting_user_id = users.id
  18. WHERE (invited_user_id = '3') AND (STATUS = 1)
  19. ORDER BY `users`.`surname` ASC

Ale czy nie da się tego zrobić w jednym zapytaniu bez union? Macie jakie pomysły? Z góry dziękuję za pomoc.
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: 26.12.2025 - 23:34