[SQL] Totalen per gebruiker

Pagina: 1
Acties:

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Ik heb een tabel met een gebruikerID en een soortID (en een tekstje bijv. maar dat is niet belangrijk). Een gebruiker kan oneindig veel keren een bepaald soortID hebben, bijv:

GebruikerID SoortID
1 1
1 1
2 2
2 1

Nu wil ik per gebruikerID het totaal hebben per soortID. Dus dan komt er bijv. uit:
GID (s=1) (s=2)
1 2 0
2 1 1

Kan ik dit met één enkele (My)SQL query oplossen?

In pseudocode:

SELECT gid,count(s=1),count(s=2) FROM tabel GROUP BY gid

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:53
Ja, dat is wel zeer basis SQL. In iedere handleiding vind je er wel iets over terug: SUM(), COUNT(), ...

https://fgheysels.github.io/


  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Als het dan zo 'zeer basis' SQL is, los het dan eens even op >:)

(maar het kan natuurlijk ook zo zijn dat ik gewoon ff niet zie hoe het moet :))

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

SELECT gid, sid, count(sid) from tabel group by gid,sid

zoiets ....

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Op vrijdag 22 februari 2002 09:48 schreef eborn het volgende:
Als het dan zo 'zeer basis' SQL is, los het dan eens even op >:)

(maar het kan natuurlijk ook zo zijn dat ik gewoon ff niet zie hoe het moet :))
group by gebruiker en soort.

Who is John Galt?


  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Maar als ik een GROUP BY doe op GID en SID dan krijg ik toch een tabel in de vorm van:

GID SID COUNT(SID)
1 1 3
1 2 2
2 1 2

En ik wil dus een lijsje met GID's, en dan het aantal keer SID=1 en het aantal keer SID=2, in één ROW per gebruiker.

Mijn gevoel zegt dat SQL het niet in één query kan (omdat door de GROUP BY op gid de gegevens van SID 'verloren' gaan), maar toch maar eens kijken of iemand weet hoe het wel kan :)

Verwijderd

Op vrijdag 22 februari 2002 09:45 schreef eborn het volgende:
Ik heb een tabel met een gebruikerID en een soortID (en een tekstje bijv. maar dat is niet belangrijk). Een gebruiker kan oneindig veel keren een bepaald soortID hebben, bijv:

GebruikerID SoortID
1 1
1 1
2 2
2 1

Nu wil ik per gebruikerID het totaal hebben per soortID. Dus dan komt er bijv. uit:
GID (s=1) (s=2)
1 2 0
2 1 1

Kan ik dit met één enkele (My)SQL query oplossen?

In pseudocode:

SELECT gid,count(s=1),count(s=2) FROM tabel GROUP BY gid
select sum(s=1),sum(s=2) from tabel where(GID='$gid') order by GID

ff snel bedacht dit, weet niet zeker of het werkt, volgens mij doet hij nu niet alles onder elkaar, maar alleen bij die GID die opgegeven wordt door de $gid.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Ok, had tabelletje verkeerd gelezen :P

Denk dat je in de richting van de tabel met zichzelf joinen moet denken(om ook s=2 te kunnen counten)

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Op vrijdag 22 februari 2002 09:58 schreef TheRookie het volgende:
Ok, had tabelletje verkeerd gelezen :P

Denk dat je in de richting van de tabel met zichzelf joinen moet denken(om ook s=2 te kunnen counten)
Hehe, het is i.d.d. een onoverzichtelijk tabelletje (vooral op de (voor mij) vroege morgen).

Bedankt voor de tip, dan gaan we daar eens naar kijken! :)

Verwijderd

Op vrijdag 22 februari 2002 09:58 schreef TheRookie het volgende:
Ok, had tabelletje verkeerd gelezen :P

Denk dat je in de richting van de tabel met zichzelf joinen moet denken(om ook s=2 te kunnen counten)
om s=2 te kunnen counten hoef je niet met de tabel zelf te joinen???? zie vorige post... (heb alleen daar sum() gebruikt..)

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Oeps, ik zie dat het toch iets anders moet :)

Ik wil nl niet een kolom met s=1 en s=2, maar een kolom met s=1 en count(s).

Dus eigenlijk wil ik per GID zien hoe vaak hij voorkomt met soortID=1 en hoe vaak hij totaal voorkomt in de tabel (met soortID=* dus eigenlijk).

Ik wil nl. het percentage berekenen van het aantal soortID=1 ten opzichte van het aantal soortID's. Als dit makkelijker kan (zonder PHP) dan hoor ik het natuurlijk ook graag ;)

Verwijderd

Op vrijdag 22 februari 2002 10:04 schreef eborn het volgende:
Oeps, ik zie dat het toch iets anders moet :)

Ik wil nl niet een kolom met s=1 en s=2, maar een kolom met s=1 en count(s).

Dus eigenlijk wil ik per GID zien hoe vaak hij voorkomt met soortID=1 en hoe vaak hij totaal voorkomt in de tabel (met soortID=* dus eigenlijk).

Ik wil nl. het percentage berekenen van het aantal soortID=1 ten opzichte van het aantal soortID's. Als dit makkelijker kan (zonder PHP) dan hoor ik het natuurlijk ook graag ;)
Wil niet lullig doen, maar heb je nu niet genoeg info om daar eventueel zelf een querie voor te bouwen? :?

percentage kan je btw weer beter gewoon in PHP doen *D

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Ja ok, percentage BEREKENEN doe ik ook nog wel in PHP :) Maar ik wil dan wel van SQL de twee getallen krijgen. Maar ik zal eens verder gaan zoeken op het joinen met zichzelf, daar moet het denk ik wel mee kunnen.

Verwijderd

Op vrijdag 22 februari 2002 10:08 schreef eborn het volgende:
Ja ok, percentage BEREKENEN doe ik ook nog wel in PHP :) Maar ik wil dan wel van SQL de twee getallen krijgen. Maar ik zal eens verder gaan zoeken op het joinen met zichzelf, daar moet het denk ik wel mee kunnen.
succes :)

btw: regel 3 van de P&W quickstart:
De antwoorden die je krijgt op je topic zullen niet in 1 keer duidelijk zijn. Dat geeft niets maar verdiep je er eerst in voordat je vraagt "wat bedoel je nou? ik ben nog maar een n00b". Dan hebben er veel mensen hier al iets van "als jij er geen moeite voor wil doen dan doen wij dat ook niet". Dus heb je weer minder kans op een goed antwoord.

[topic=397053/1/25]

*D

  • eborn
  • Registratie: April 2000
  • Laatst online: 12-09 13:59
Die reply was niet bedoeld om de al aanwezige posters nogmaals te verleiden om een reactie te plaatsen. Het was meer bedoeld om nog even duidelijk te maken wat ik met de query wilde doen. :P
Pagina: 1