Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z rozbudowaną kwerendą (subkwerenda, subselect?)
chrupka
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 11.01.2007

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


Witam.

Mam pewien problem ze stworzeniem kwerendy w MySQL.

Posiadam dwie tabele, w skrócie:

`recomm_emails` (
`id`
`user_id
`email`
`registered
`active
)

`users` (
`id`
`login`
)

Tabela 'recomm_emails' przechowuje informacje o adresach e-mail, na które zostały wysłane zaproszenia do serwisu.
Pole 'user_id' to ID zarejstrowanego użytkownika, który wysłał zaproszenie na dany e-mail. Pole 'registered' wskazuje 1, gdy zaproszony użytkownik zarejestrował się. Pole 'active' wskazuje 1, gdy zaproszony użytkownik dokonał aktywacji konta po rejestracji.

Mój problem to kwerenda, która w wyniku da mi następującą listę:
- id i login zapraszającego usera
- łączna liczba zaproszonych użytkowników
- liczba zaproszonych użytkowników, którzy dokonali rejestracji i aktywacji konta (registered=1 and active=1)
- liczba zaproszonych użytkowników, którzy dokonali rejestracji ale nie aktywowali konta (registered=1 and active=0)
- liczba zaproszonych użytkowników, którzy nie dokonali rejestracji (registered=0)

Lista ta musi mieć możliwość sortowania po wybranej liczbie z przedstawionych czterech powyżej.

W jaki sposób skonstruować taką kwerendę? Myślę i myślę już od kilku ładnych godzin i wciąż nie mogę stworzyć odpowiedniego rozwiązania.
Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Smertius
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Może lepiej tak niż robić 4 podzapytania (IMG:style_emoticons/default/wink.gif)
  1. SELECT users.id, users.login,
  2. COUNT(recomm_emails.id) AS liczba_wszystkich_zaproszonych,
  3. COUNT(IF(recomm_emails.registered=1 AND recomm_emails.active=1,recomm_emails.id, NULL )) AS aktywacja_i_rejestracja,
  4. COUNT(IF(recomm_emails.registered=1 AND recomm_emails.active=0,recomm_emails.id, NULL )) AS rejestracja_bez_aktywacji,
  5. COUNT(IF(recomm_emails.registered=1,recomm_emails.id, NULL )) AS bez_rejestracji
  6. FROM recomm_emails
  7. LEFT JOIN users ON users.id = recomm_emails.user_id GROUP BY users.id
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: 15.09.2025 - 21:34