Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czy mozna zastapic 3 zapytania jednym
yalus
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


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`


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




nexis:
Zapomniałeś przecinków po każdej "kolumnie".
Go to the top of the page
+Quote Post
yalus
post
Post #4





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


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?


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:07