Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ograniczenie liczby zapytac
Forum PHP.pl > Forum > Bazy danych > MySQL
thornag
Rozumiem ze moje tematy mnoza sie jak grzyby po deszczy ale zrozumialem ze zwykle kaskadowe selectowanie to sie robilo w przedszkolu smile.gif Szukam wiedzy tongue.gif

Ogolnie mam dwie tabele - tabele z sesjami i tabele z grupami uzytkownikow.

Chce pobrac informacje jacy uzytkownicy (nalezacy do jakis grup) sa aktualnie online.
Grup jest 5, wiec do teraz wykonuje to 5 zapytaniami, oto one:
  1. SELECT u.user_id, s.session_user, u.friends FROM sessions s, users_groups u WHERE s.session_user != 0 AND s.session_user = u.user_id AND u.friends = 1
  2.  
  3. SELECT u.user_id, s.session_user, u.standard_users FROM sessions s, users_groups u WHERE s.session_user != 0 AND s.session_user = u.user_id AND u.standard_users = 1
  4.  
  5. SELECT u.user_id, s.session_user, u.deluxe_users FROM sessions s, users_groups u WHERE s.session_user != 0 AND s.session_user = u.user_id AND u.deluxe_users = 1
  6.  
  7. SELECT u.user_id, s.session_user, u.corporate_users FROM sessions s, users_groups u WHERE s.session_user != 0 AND s.session_user = u.user_id AND u.corporate_users = 1
  8.  
  9. SELECT u.user_id, s.session_user, u.corporate_users FROM sessions s, users_groups u WHERE s.session_user != 0 AND s.session_user = u.user_id AND u.corporate_users = 1


Konstrukcja tabeli grupy.

Kod
user_id grupa1 grupa2 ....
245        1    0
296        1    0
itp


Moje pytanie, czy da sie to zrealizowac za posrednictwem mniejszej ilosci zapytan ? Ogolnie zoptymalizowac ten fragment ?
SongoQ
Np union i dodawac sobie typ zapytania.
thornag
Probowalem union. Dla testu stworzylem zapytanie:

  1. SELECT COUNT( user_id ) AS users
  2. FROM users UNION
  3. SELECT COUNT( session_id ) AS sessions
  4. FROM sessions


Podaje mi wynik w postaci:
Kod
users
  2
  3

Gdzie pierwszy rekord to liczba userow a drugi to liczba sesji. Jak natomiast podac to w postaci
Kod
users sessions
  2       3


Oczywiscie dalej chce uzywac UNION nie zapytania na dwie tabele bo zapytanie docelowe jest troche bardziej skomplikowane jak te w pierwszym poscie.
SongoQ
Moznesz np tak:

  1. SELECT COUNT( user_id ) AS 'count', 'users' AS 'type'
  2. FROM users UNION
  3. SELECT COUNT( session_id ) AS 'count', 'session' AS 'type'
  4. FROM sessions
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.