Witam, w mojej bazie są dwie tabele: users i screenshots. W tabeli screenshots jest kolumna user_id. Chciałbym jednym zapytaniem uzyskać niektóre kolumny z tabeli users oraz liczbę screenshotów użytkownika o danym id. Dodam, że znam tylko id użytkownika którego dane chce znaleźć.
select users.*,count(ss.id) as count FROM users INNER JOIN screenshots ss on users.id=ss.user_id where users.id=$idUsera GROUP BY ss.user_id
Daj znać, czy działa, bo nie testowałem.
Tak. Jest taka możliwość. Wystarczy dodać order by po grupowaniu.
1.Wyświetlanie wszystkich screenshotów danego usera - sortowanie po dacie malejąco:
select users.*,count(ss.id) as count FROM users INNER JOIN screenshots ss on users.id=ss.user_id where users.id=$idUsera GROUP BY ss.user_id ORDER BY ss.created DESC
2. Wybranie tylko jednego, ostatnio dodanego rekordu usera:
select users.*,count(ss.id) as count FROM users INNER JOIN screenshots ss on users.id=ss.user_id where users.id=$idUsera GROUP BY ss.user_id ORDER BY ss.created DESC limit 1
Odnośnie GROUP BY, to nie jestem dobry w tłumaczeniu. Po rozwiązaniu kilku przykładów związanych z tą klauzulą, zrozumiesz ją :)
Przepraszam, nie wyraziłem się dość jasno, chodziło mi o zwracanie daty i czasu (wartości created) wykonania najnowszego screena. Przerabiam właśnie kurs MySQL'a ale jeszcze nie dotarłem do tego momentu.
Przykład:
select Year(ss.created) as year,MONTH(ss.created) as month from screenshots ss
Pokombinowałem trochę z zapytaniami zagnieżdżonymi i wyszło mi coś takiego:
select users.name, users.alias, count(screenshots.id) as screenshots, (select url from screenshots where user_id=12 order by created desc limit 0,1) as latestSSurl, (select created from screenshots where user_id=12 order by created desc limit 0,1) as latestActivity from users, screenshots where users.id = 12 and screenshots.user_id = 12
Może nie jest to demon szybkości, ale działa. Próbowałem uniknąć redundancji usuwając drugie podzapytanie, bo różni się od pierwszego tylko tym co zwraca. Wiesz może, czy z jednego zapytania zagnieżdżonego można przypisać wartość do dwóch kolumn np:
(select url, created from screenshots where user_id=12 order by created desc limit 0,1) as latestSSurl and latestActivity
?
93,426 zapytań
142,421 odpowiedzi
322,647 komentarzy
62,787 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj