Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-11-09 09:03:45

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Mysql - zapytanie o ilość rekordów tylko z zawartością

Witam,
Mam taki problem! Wie ktoś może jak wykonać zapytanie dzięki któremu wyciągne ilość rekordów z zawartością.

mam coś takiego:

id   nazwa kwota1  kwota2
1    test1   2.20      2.40
2    test2   3.40     
3    test3   1.30     
4    test4   1.20      2.40
5    test5               3.70

I generalnie to wynik miał by być taki:

ilość kwota1 = 4
ilość kwota2 = 3

Pola w bazie kwota1 i kwota2 mają domyślnie wartość not null

próbowałem takich zapytań np:

Kod:

SELECT count(kwota1) as ilosc, SUM(kwota1) as suma FROM tabelka where kwota1 is not null

SELECT count(kwota2) as ilosc, SUM(kwota2) as suma FROM tabelka where kwota2 is not null

ale pokazuje mi:

ilość kwota1 = 5
ilość kwota2 = 5

Czyli suma wszystkich.
Był bym wdzięczny za pomoc.


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#2  2011-11-09 09:58:22

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

Piszesz o zapytaniu, gdzie rezultatem ma być dwie kolumny ilość i suma i piszesz, że "pokazuje ci":

ilość kwota1 = 5
ilość kwota2 = 5

Co to wyżej oznacza? Jest to ilość, czy suma, czy co "ci pokazuje"? Może zrób selecta i wklej dokładnie to co dostajesz, wykonaj w konsoli, skopiuj i wklej. Bo nie idzie się zorientować.

Ostatnio edytowany przez kamikaze (2011-11-09 09:59:32)

Offline

 

#3  2011-11-09 11:36:26

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

Tzn napisałem ilość. Bo chodzi mi o ilość a sumę dobrze pokazuje dlatego tego nie opisałem.

Ostatnio edytowany przez debbie (2011-11-09 11:36:53)


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#4  2011-11-09 12:24:23

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

Zmień count(kwota1) na count(*) .

Offline

 

#5  2011-11-09 21:34:39

  ponury_kostek - Użytkownik

ponury_kostek
Użytkownik
Skąd: Wałbrzych
Zarejestrowany: 2007-01-02
Serwis

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

Spróbuj czegoś takiego

Kod:

SELECT SUM(IF(kwota1, 1, 0)) AS k1, SUM(IF(kwota2, 1, 0)) AS k2 FROM tabelka

Offline

 

#6  2011-11-10 08:44:29

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

ponury_kostek napisał(-a):

Spróbuj czegoś takiego

Kod:

SELECT SUM(IF(kwota1, 1, 0)) AS k1, SUM(IF(kwota2, 1, 0)) AS k2 FROM tabelka

Nie zadziała, skoro count(kwota1) nie działa, a SUM(IF(kwota1, 1, 0)) to przecież to samo. Pewnie poprzednie zadziałało bo już się nie odzywa, jakby było źle by walił w ogień ;]

Ostatnio edytowany przez kamikaze (2011-11-10 15:58:26)

Offline

 

#7  2011-11-12 11:43:09

  ponury_kostek - Użytkownik

ponury_kostek
Użytkownik
Skąd: Wałbrzych
Zarejestrowany: 2007-01-02
Serwis

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

kamikaze napisał(-a):

ponury_kostek napisał(-a):

Spróbuj czegoś takiego

Kod:

SELECT SUM(IF(kwota1, 1, 0)) AS k1, SUM(IF(kwota2, 1, 0)) AS k2 FROM tabelka

Nie zadziała, skoro count(kwota1) nie działa, a SUM(IF(kwota1, 1, 0)) to przecież to samo. Pewnie poprzednie zadziałało bo już się nie odzywa, jakby było źle by walił w ogień ;]

Hmm, u mnie zadziałało tak jak trzeba, nie wrzucał bym przecież bez sprawdzenia :P

Offline

 

#8  2011-11-12 12:17:00

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

ponury_kostek napisał(-a):

kamikaze napisał(-a):

ponury_kostek napisał(-a):

Spróbuj czegoś takiego

Kod:

SELECT SUM(IF(kwota1, 1, 0)) AS k1, SUM(IF(kwota2, 1, 0)) AS k2 FROM tabelka

Nie zadziała, skoro count(kwota1) nie działa, a SUM(IF(kwota1, 1, 0)) to przecież to samo. Pewnie poprzednie zadziałało bo już się nie odzywa, jakby było źle by walił w ogień ;]

Hmm, u mnie zadziałało tak jak trzeba, nie wrzucał bym przecież bez sprawdzenia :P

Jasne, ale pewnie masz na kolumnach NOT NULL, a debbie najwyraźniej nie ma. Ale już nas chyba olał, bo się nie odzywa.

Offline

 

#9  2011-11-12 12:25:00

  ponury_kostek - Użytkownik

ponury_kostek
Użytkownik
Skąd: Wałbrzych
Zarejestrowany: 2007-01-02
Serwis

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

kamikaze napisał(-a):

Jasne, ale pewnie masz na kolumnach NOT NULL, a debbie najwyraźniej nie ma. Ale już nas chyba olał, bo się nie odzywa.

No właśnie nie mam, a nawet jak ustawie NOT NULL to nic to nie zmienia w działaniu tego zapytania.

Offline

 

#10  2011-11-12 12:46:02

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Mysql - zapytanie o ilość rekordów tylko z zawartością

ponury_kostek napisał(-a):

kamikaze napisał(-a):

Jasne, ale pewnie masz na kolumnach NOT NULL, a debbie najwyraźniej nie ma. Ale już nas chyba olał, bo się nie odzywa.

No właśnie nie mam, a nawet jak ustawie NOT NULL to nic to nie zmienia w działaniu tego zapytania.

Tak, jemu nie działa bo nie ma NOT NULL, a zamiast tego ma DEFAULT NULL (w sumie to tylko podejrzenie), więc ma tam NULL-e i COUNT na kolumnie i tak to zliczy. Ty używasz IF i to będzie działać, masz racje, moja pomyłka.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)