Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy mozna zastapic 3 zapytania jednym
Forum PHP.pl > Forum > Bazy danych > MySQL
yalus
witam

jak mozn zastapisc ponizsze 4 zapytania jednym (chociaz nie na 100% jestem pewien czy mozna)

  1. rozne wartosci dla tblmain.STATUS
  2. --incorrect_det
  3. --incorrect_numb
  4. --not_eligible
  5. --valid
  6.  
  7. SELECT
  8. tblsettings.date_of_check,
  9. tblsettings.mobile_number,
  10. tblmain.STATUS,
  11. tblmain.mobile_number,
  12. tbltemp.mobile_number
  13. FROM tblsettings, tblmain, tbltemp
  14. WHERE tblsettings.mobile_number=tblmain.mobile_number AND tblmain.mobile_number=tbltemp.mobile_number AND tblsettings.date_of_check='2009-01-30' AND tblmain.STATUS='not_eligible' --- tutaj zmieniam tylko wartosc status jak powyzej



chodzi mi o to aby jednym zapytaniem dostac informacje ile w tabeli tblmain wystepuje rekordow o danym statusie, tzn
chcialbym dostac cos takiego:

incorrect_det 234
incorrect_numb 456
not_eligible 267
valid 345


ja robie to na piechote i w powyzszym zapytaniu zmieniam za kazdym razem status na (incorrect_det,incorrect_numb,not_eligible,valid)

jezeli w gre wchodzila by tylko jedna tabela to sprawa jest prosta:

robie cos takiego i mam wynik

  1. SELECT STATUS, count(*) ilosc FROM tblmain WHERE date_of_check='2007-06-14' GROUP BY STATUS


czy mozna cos takiego zrobic dla trzech tabel


pozdrawiam i z gory dziekuje za pomoc
nexis
Cytat(yalus @ 31.01.2009, 15:02:22 ) *
chcialbym dostac cos takiego:

incorrect_det 234
incorrect_numb 456
not_eligible 267
valid 345

  1. SELECT
  2. (SELECT COUNT(*) FROM `tblmain` WHERE `status` = 'incorrect_det') AS `incorrect_det`
  3. (SELECT COUNT(*) FROM `tblmain` WHERE `status` = 'incorrect_numb') AS `incorrect_numb`
  4. (SELECT COUNT(*) FROM `tblmain` WHERE `status` = 'not_eligible') AS `not_eligible`
  5. (SELECT COUNT(*) FROM `tblmain` WHERE `status` = 'valid') AS `valid`
phpion
nexis:
Zapomniałeś przecinków po każdej "kolumnie".
yalus
dzieki za zainteresowanie

ale Twoja propozycja chyba nie spelni moich oczekiwan bo teraz widze ze chyba za ubogo opisalem problem. postaram sie to teraz zrobic tak jak nalezy:

w bazie mam 3 tabele:

1 - tblsettings
2 - tblmain
3 - tbltemp

w tabeli tbltemp znajduja sie tylko 100 rekordow w tabeli tblmain i tabeli tblsettings znajduja sie te same rekordy co w tabeli tbltemp plus jeszcze kilkaset innych i teraz chcialbym wydobyc z tabel tblmain i tblsettings te same rekordy ktore znajduja sie w tbltemp i jest to bardzo proste bo w tabeli tbltemp kolumna mobile_number posiada unikalne wpisy i aby to zrobic robie cos takiego:

  1. SELECT
  2. tblsettings.mobile_number,
  3. tblmain.mobile_number,
  4. tbltemp.mobile_number
  5. FROM tblsettings, tblmain, tbltemp
  6. WHERE tblsettings.mobile_number=tblmain.mobile_number AND tblmain.mobile_number=tbltemp.mobile_number


to jest chyba b.proste

natomias to co mnie interesuje jest troszke bardziej skomplikowane, otoz
w tabeli tblsettings znajduje sie kolumna date_of_check a w tabeli tblmain kolumna status i teraz chcialbym aby na podstawie rekordow z tabeli tbltemp wyciagnac z tabeli tblmain te same rekordy i pogrupowac je wg statusu czyli kolumnny status ale rowniez biorac pod uwage kolumne date_of_check ktora znajduje sie w tabeli tblsettings i otrzymac wynik np. w takiej postaci:

incorrect_det 234
incorrect_numb 456
not_eligible 267
valid 345

powyzsze wartosci to sa wpisy w kolumnie status.

jezeli to wszystko odbywalo by sie w zakresie jednej tabeli to sprawa jest jasna, zapytanie wygladalo by tak:

  1. SELECT STATUS, count(*) ilosc FROM tbltabela WHERE date_of_check='2007-06-14' GROUP BY STATUS


czy jest to wogole mozliwe zrobic to samo laczac 3 tabele?
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.