Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze złączeniem tabel (JOIN)
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Nie mogę poradzić sobie z pewnym zapytaniem. Użytkownik o numerze account_id=1 należy do Grupy1, natomiast użytkownik o numerze account_id=2 należy do Grupy4 i Grupy5. Oto tabele:

accounts_groups (poniżej przykładowe dane)
  1. account_id | group_id
  2. -------------------------
  3. 1 | 1
  4. 2 | 4
  5. 2 | 5


groups (poniżej przykładowe dane)
  1. group_id | group_name | group_description
  2. ---------------------------------------------------
  3. 1 | Grupa1 | Opis grupy 1
  4. 2 | Grupa2 | Opis grupy 2
  5. 3 | Grupa3 | Opis grupy 3
  6. 4 | Grupa4 | Opis grupy 4
  7. 5 | Grupa5 | Opis grupy 5
  8. 6 | Grupa6 | Opis grupy 6
  9. 7 | Grupa7 | Opis grupy 7


Chcę pobrać spis grup (group_id, group_name, group_description) do których nie należy jeszcze dany użytkownik.

Mam zapytanie:
  1. SELECT groups.group_id, group_name, group_description FROM accounts_groups LEFT JOIN groups ON accounts_groups.group_id<>groups.group_id WHERE accounts_groups.account_id=1;

które nie działa jeśli użytkownik nie należy do żadnej grupy lub należy do kilku. Jeśli użytkownik należy do jednej grupy zwraca poprawne wyniki.

Proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Norbas
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 6.02.2006

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


Cytat
Mi chodzi o zastosowanie JOIN'a.

Dlaczego? Wersja 3.x bazy? Cele poznawcze? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Da się za pomocą JOIN, ale to zapytanie nie będzie wydajne:
  1. SELECT DISTINCT g.group_id, group_name, group_description
  2. FROM groups AS g
  3. JOIN accounts_groups AS ag ON (ag.group_id=g.group_id AND account_id<>1)
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: 31.12.2025 - 03:33