• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Super trudne zapytanie

Object Storage Arubacloud
0 głosów
471 wizyt
pytanie zadane 14 lutego 2016 w SQL, bazy danych przez NTXFN Gaduła (3,430 p.)
Jest problem. Mam tabelę z takimi emailami jakby. No i jej struktura wygląda tak:

id to id

nick to nazwa użytkownika

title tytuł emailu

date jego data

content jego treść

new czy jest nowy (TRUE/FALSE)

Chodzi o to bym dostał wynik:

nick, ile wiadomości, ile nowych

 

Jak mógłbym to zrobić ? Próbowałem na różne sposoby ale nie dałem rady. problem polega na tym jak sprawdzić w funkcji sum że mają być sumowane tylko te które są wysłane przez danego użytkownika a nie przez wszystkich. Czy to jest możliwe w samym SQL ?

Używam bazy danych MySQL.

3 odpowiedzi

+1 głos
odpowiedź 14 lutego 2016 przez Comandeer Guru (601,450 p.)
wybrane 16 lutego 2016 przez NTXFN
 
Najlepsza

Hm… GROUP BY?

komentarz 14 lutego 2016 przez Piotr Karasiński Mądrala (6,360 p.)

Dokładnie musisz użyć GROUP BY

np.

SELECT nick, count(id) as ilosc_maili

FROM nazwa_tabeli

GROUP BY nick 

 

To da Ci ilość wszystkich maili dla nowych trzeba dodać where new = true.

Nie mam pomysłu na zrobienie tego w jednym prostym zapytaniu. Chyba że jakieś złożone.

komentarz 14 lutego 2016 przez jeremus Maniak (59,720 p.)
 -- można z warunkiem na kolumnie , pierwsz składnia to np. asscess,foxpro itp
-- druga SQL Microsoft
-- nie sprawdzałem co działa w mysql, możłiwe że coś innego ale zasada podobna

SELECT nick, count(id) as ilosc_maili,sum(iif(new=true,1,0)) as nowe
 
FROM nazwa_tabeli
 
GROUP BY nick


lub dla innego SQL

SELECT nick, count(id) as ilosc_maili,sum(case when  new=true then 1 else 0 end ) as nowe
 
FROM nazwa_tabeli
 
GROUP BY nick

 

0 głosów
odpowiedź 14 lutego 2016 przez NTXFN Gaduła (3,430 p.)

No ale czy to mi zwróci aby na pewno sumę wszystkich nowych wiadomości ale do KONKRETNEGO UŻYTKOWNIKA ?

NP:

Nick |  Ilość maili | Ilość nowych

Ja     | 5                | 1 

On     | 10              | 1

 

Bo to co podajece to zwraca tylko ilość nowych i niki a mi chodzi o ilość nowych dla KAŻDEGO NIKU.

komentarz 15 lutego 2016 przez jeremus Maniak (59,720 p.)
-- na pewno to zapytanie zwróci to co chcesz

SELECT nick, count(id) as ilosc_maili,sum(if(new=true,1,0)) as nowe
  
FROM nazwa_tabeli
  
GROUP BY nick

 

komentarz 16 lutego 2016 przez NTXFN Gaduła (3,430 p.)
Jesteście genialni ! Chwała wam !!!
0 głosów
odpowiedź 14 lutego 2016 przez NTXFN Gaduła (3,430 p.)
edycja 15 lutego 2016 przez NTXFN

mam coś takiego:

SELECT nick , sum((SELECT em.new as ilosc FROM emails as em WHERE em.nick = emails.nick )) as ilosc FROM emails

Ale mam błąd: 

#1242 - Subquery returns more than 1 row 

 

Podobne pytania

+1 głos
1 odpowiedź 78 wizyt
pytanie zadane 12 września 2023 w SQL, bazy danych przez PropertySamp Nowicjusz (160 p.)
+1 głos
1 odpowiedź 132 wizyt
0 głosów
0 odpowiedzi 144 wizyt
pytanie zadane 11 marca 2023 w SQL, bazy danych przez qax Dyskutant (8,060 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...