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[/quote]
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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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
[color=blue]Wrócę jak zjem zupę i drugie danie - tyle[/color]
[color=blue]a oto ta zupa:[/color]

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ą

[quote=ponury_kostek]Spróbuj czegoś takiego

Kod:

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

[/quote]
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ą

[quote=kamikaze][quote=ponury_kostek]Spróbuj czegoś takiego

Kod:

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

[/quote]
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ń ;][/quote]
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ą

[quote=ponury_kostek][quote=kamikaze][quote=ponury_kostek]Spróbuj czegoś takiego

Kod:

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

[/quote]
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ń ;][/quote]
Hmm, u mnie zadziałało tak jak trzeba, nie wrzucał bym przecież bez sprawdzenia :P[/quote]
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ą

[quote=kamikaze]Jasne, ale pewnie masz na kolumnach NOT NULL, a debbie najwyraźniej nie ma. Ale już nas chyba olał, bo się nie odzywa.[/quote]
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ą

[quote=ponury_kostek][quote=kamikaze]Jasne, ale pewnie masz na kolumnach NOT NULL, a debbie najwyraźniej nie ma. Ale już nas chyba olał, bo się nie odzywa.[/quote]
No właśnie nie mam, a nawet jak ustawie NOT NULL to nic to nie zmienia w działaniu tego zapytania.[/quote]
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 ;-)

[ Generated in 0.018 seconds, 10 queries executed ]

Informacje debugowania

Time (s) Query
0.00030 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00203 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.59.165' WHERE u.id=1
0.00109 UPDATE punbb_online SET logged=1716054618 WHERE ident='3.145.59.165'
0.00077 SELECT * FROM punbb_online WHERE logged<1716054318
0.00159 DELETE FROM punbb_online WHERE ident='185.191.171.6'
0.00136 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20029 AND t.moved_to IS NULL
0.00010 SELECT search_for, replace_with FROM punbb_censoring
0.00371 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20029 ORDER BY p.id LIMIT 0,25
0.00180 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20029
Total query time: 0.0128 s