Siema. Mam pewien problem.
Otóż mam dwie tabele, jedna z sesjami użytkowników
session_id | room_id |
---|---|
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
Siema. Mam pewien problem.
Otóż mam dwie tabele, jedna z sesjami użytkowników
session_id | room_id |
---|---|
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
xxxx | 1 |
Przepraszam przez przypadek wysłałem ten pierwszy niedokończony post...
Pierwsza tabela:
session_id | room_id |
---|---|
xxxdfx | 1 |
xxgfxx | 2 |
xxxxx | 1 |
xxdfxxx | 2 |
xxxfx | 1 |
xdfxxx | 1 |
Druga:
room_id | room_name |
---|---|
1 | Main |
2 | NotMain |
A mój cel to otrzymanie takiego wyniku:
room_id | room_name | ilosc osob w pokoju |
---|---|---|
1 | Main | 4 |
2 | NotMain | 2 |
Sęk w tym że nie wiem jak zliczyć ile osób siedzi w danym pokoju. Próbowałem z count no ale nie wiem czy dobrze kombinuje bo na razie nic mi nie wychodzi.
Nakieruje mnie ktoś na rozwiązanie problemu?
Tak, COUNT to jest dobry trop.
LEFT JOIN, COUNT, GROUP
select d.room_id, d.room_name, count(p.session_id) from Druga as d inner join Pierwsza as p
group by d.room_id, d.room.name
edit: oczywiście jak chcesz mieć w wynikach także puste pokoje to musisz zrobić
left outer join
zamiast inner joina
dziękuje bardzo za odpowiedzi.
Mam jeszcze jeden problem. Za pomocą jednego zapytania chciałbym usunąć wszystkie puste pokoje. Przykładowe tabele:
session_id | room_id |
---|---|
xdd | 1 |
xddsad | 3 |
xdasdd | 3 |
xdaad | 1 |
xdafgd | 1 |
xdhdsd | 3 |
xdghasd | 1 |
xasddd | 1 |
xdsd | 1 |
room_id | room_name |
---|---|
1 | Pokój 1 |
2 | Pokój 2 |
3 | Pokój 3 |
4 | Pokój 4 |
Próbowałem czymś takim:
DELETE p.* FROM pokoje p LEFT OUTER JOIN sesje s ON s.room_id = p.room_id WHERE s.room_id = NULL
No ale nie za bardzo to działa. Ma ktoś jakiś pomysł?
INNER JOIN
ok, rozwiązałem ten problem. Wystarczyło:
s.room_id = NULL
Zamienić na:
s.room_id IS NULL