Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie kilku zapytaniań
Forum PHP.pl > Forum > Bazy danych > MySQL
xamrex
Witam mam tabele a w niej pola
uid, gid, status
|1 4 2|
|1 2 1|
|1 7 2|

Zeby pobrać liczbę ile uid =1 ma status równy 2 wpisuje
SELECT Count(status) as raz FROM tabela WHERE uid=1 and status =2
//żeby sprawdzić status równy 1
SELECT Count(status) as raz FROM tabela WHERE uid=1 and status =1

Czy da się te zapytania połączyć w jedno? Tak żeby wynikiem były dwa pola (status1,status2)
Próbowałem coś takiego

  1. SELECT Count(STATUS) AS status1, status2,
  2. (SELECT Count(STATUS) AS status2
  3. FROM xp WHERE uid=1 AND STATUS=2)
  4. FROM xp WHERE uid =1 AND STATUS=1

Ale nie działa
Fifi209
union select zawsze możesz użyć.
xamrex
hmm tak ale chciałbym żeby mi wynik zwracał jako 'drugą tabel'
tzn
|status1|status2|
1 2
a nie jakos
|status|
1
2
Fifi209
walnij selecta potem concat i znów dwa selecty w nim, rozdziel sobie np. ; i potem explode w php rozbijaj
YaQzi
samym selectem to jakoś tak pewnie...

  1. SELECT DISTINCT uid,
  2. (
  3. SELECT Count(STATUS) FROM tabela WHERE uid = T.uid AND STATUS = 1
  4. ) AS status1,
  5. (
  6. SELECT Count(STATUS) FROM tabela WHERE uid = T.uid AND STATUS = 2
  7. ) AS status2
  8. FROM tabela T
xamrex
YaQzi prawie pięknie. Ale jak powinno wyglądać zapytanie które zwracało by tylko Status1,status2 (bez uid)?
YaQzi
Dla konkretnego uid?

  1. SELECT
  2. (
  3. SELECT Count(STATUS) FROM tabela WHERE uid = 1 AND STATUS = 1
  4. ) AS status1,
  5. (
  6. SELECT Count(STATUS) FROM tabela WHERE uid = 1 AND STATUS = 2
  7. ) AS status2
xamrex
Wielkie dzięki
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-2024 Invision Power Services, Inc.