Toon posts:

[sql] Meerdere counts.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb gezocht maar geen antwoord gevonden..

ik wil een query maken zoals dit
code:
1
SELECT count(views) as totalviews, count(id) as totalpictures, count(filesize) as totalsize FROM picdb WHERE user_id='1' LIMIT 0, 30

nu krijg ik 5,5,5 maar dat klopt voor geen meter, als ik max gebruik krijg ik wel een max waarde maar dus niet wat ik zoek :)... wie o wie kan me hier wat meer mee helpen.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

en die counts los leveren wel het goede op?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
tuurlijk B-)

  • reddevil001
  • Registratie: Januari 2002
  • Laatst online: 11:18
sum() gebruiken?

Ik weet niet of je dit bedoelt, maar count telt het aantal gevonden records en telt niet op.

None


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Begin eens om uit te schrijven in normale taal wat voor query je los laat, misschien zie je dan zelf je eigen fout in.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
idd |:( sum sum sum dum dum dom! |:( tnx... maar ben nog niet klaar hoor :+

  • reddevil001
  • Registratie: Januari 2002
  • Laatst online: 11:18
Best geestig. Antwoord geven op een vraag die eigenlijk (nog) niet gesteld is.... Beetje helderziend.

None


Verwijderd

Topicstarter
reken sommetje met mysql.

Ik heb bv

id - value - size
1 - 1 - 2323
2 - 23 - 23111
3 - 2 - 11134
4 - 21 - 5543
5 - 7 - 23116

en nu wil ik in 1 query alle values * sizes doen... maar dan wel per veld anders klopt er geen bal van :) hoe fix ik dit?

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-08 16:45
select value * size as result from picdb;

  • Kerminator
  • Registratie: Augustus 2001
  • Laatst online: 08:15
Op woensdag 24 juli 2002 22:36 schreef Sjaaky het volgende:
select value * size as result from picdb;
Klein beetje off-topic maar toch: weet iemand of het nog in performance scheelt om dit soort berekeningen door MySQL te laten doen, of het 'zelf' in php te doen?

Trust me - I'm a lawyer!


Verwijderd

Hoogstwaarschijnlijk gaat dat in MySQL sneller.

  • Kerminator
  • Registratie: Augustus 2001
  • Laatst online: 08:15
Op donderdag 25 juli 2002 12:55 schreef MrX het volgende:
Hoogstwaarschijnlijk gaat dat in MySQL sneller.
O ja? Ik had juist het tegenovergestelde gedacht.. (gok) Kan je me uitleggen waarom dat in MySQL sneller is? Ik had we al bedacht dat je op die manier minder data over je MySQL-connectie verstuurd.

Trust me - I'm a lawyer!


Verwijderd

Op donderdag 25 juli 2002 13:01 schreef Kerminator het volgende:

[..]

O ja? Ik had juist het tegenovergestelde gedacht.. (gok) Kan je me uitleggen waarom dat in MySQL sneller is? Ik had we al bedacht dat je op die manier minder data over je MySQL-connectie verstuurd.
1) de hoeveelheid data die van MySQL naar PHP wordt gestuurd is kleiner als je de berekening door MySQL laat uitvoeren omdat je maar 1 kolom terugkrijgt ipv 2.
2) MySQL is gecompileerde code, waar PHP geinterpreteerde code is
3) MySQL is juist bedoeld om dergelijke relatief eenvoudige bewerkingen op kolommen uit te voeren, zelfs al tijdens het ophalen van de gegevens

Eerlijkheid gebiedt mij te zeggen dat mijn uitspraken gebaseerd zijn op een 'gut feeling' en niet uitgebreide ervaring.

Verwijderd

Topicstarter
Ik heb de volgende db met gegevens.

picdb
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 id  user_id  filename  filesize  views  status  
1 1 mid.jpg 45273 11 0 
2 1 oei.jpg 7847 1 0 
3 1 phpfreak.jpg 13723 1 0 
4 1 Shot.jpg 48686 9 0 
5 1 shotje.jpg 17052 1 0 
6 3 c.gif 1053 2 0 
7 3 cur.jpg 19885 2 0 
8 3 devilslock.gif 1104 4 0 
9 3 frown.gif 594 2 0 
10 3 grmpfff.gif 5165 1 0 
11 3 lol.gif 1250 0 0 
12 3 no.gif 1909 0 0 
13 3 oei.jpg 7847 1 0 
14 3 phpfreak.jpg 13723 0 0 
15 3 Shot.jpg 48686 0 0 
16 3 shotje.jpg 17052 1

userdb
code:
1
2
3
4
 id  ip  host  logdate  logip  username  password  email  status  sessionid  logins  
1 217.1.1.0 localhost 2002-07-24 217.121.132.247 admin ***** admin@picstore.com 5 0 2 
3     2002-07-25 127.0.0.1 xtentic ***** xtentic@hotmail.com 5 0 7 
4     2002-07-24 217.121.132.247 marc ***** marc@hotmail.com 0 0 2

nu krijg ik met de volgende query een verkeerde uitkomst..
code:
1
2
3
4
5
6
SELECT sum(picdb.views) as tviews, 
count(DISTINCT picdb.id) as tpictures, 
sum(picdb.filesize) as tsize, 
count(DISTINCT userdb.id) as tusers, 
sum(picdb.views * picdb.filesize) as tbandwidth, 
sum(userdb.logins) as tlogins FROM picdb, userdb

uitkomst
code:
1
2
tviews  tpictures  tsize  tusers  tbandwidth  tlogins  
108 16 752547 3 3157029 176

1. het aantal users is verkeerd, het zijn er maar 2
2. het aantal tlogins zijn helemaal verkeerd... :? hoe kan dat?

Pls help...

Verwijderd

Topicstarter
en als ik de 'volgorde' verander krijg ik weer andere results :?

Verwijderd

/me zucht
Denk nou eens na wat je doet in die query ...
code:
1
2
3
4
5
6
7
8
9
SELECT 
   sum(picdb.views) as tviews, 
   count(DISTINCT picdb.id) as tpictures, 
   sum(picdb.filesize) as tsize, 
   count(DISTINCT userdb.id) as tusers, 
   sum(picdb.views * picdb.filesize) as tbandwidth, 
   sum(userdb.logins) as tlogins 
FROM 
   [b]picdb, userdb[/b]

Als je meer dan 1 tabel opneemt in FROM zonder een relatie aan te geven wordt er een cartetisch product opgebouwd, d.w.z. dat alle mogelijke combinaties van de rijen wordt gemaakt.

Doe maar eens het volgende:
code:
1
2
SELECT *
FROM picdb, userdb

Mensen met een 'alles moet in 1 query passen' fetish moeten niet zo verbaasd opkijken als ze zomaar een combinatie van queries in 1 query vrotten en het niet werkt.

Verwijderd

Topicstarter
Bedankt voor je reactie.

Wat ik denk dat ik doe is van de 2 tabellen bepaalde velden (op)tellen met count reken ik gewoon uit hoeveel veldjes het zijn en met sum wil ik graag van alle velden de gegevens die er in staan met een bep. naam.

:? kijk ik nu zo onlogisch, op phpfreaks kwamen ze met het idee om een join te doen zonder een relatie te leggen...

Verwijderd

Op vrijdag 26 juli 2002 06:17 schreef xtentic het volgende:
Bedankt voor je reactie.

Wat ik denk dat ik doe is van de 2 tabellen bepaalde velden (op)tellen met count reken ik gewoon uit hoeveel veldjes het zijn en met sum wil ik graag van alle velden de gegevens die er in staan met een bep. naam.

:? kijk ik nu zo onlogisch, op phpfreaks kwamen ze met het idee om een join te doen zonder een relatie te leggen...
lees de laatste reply van MrX nog eens door (en nog probeer het dan ook te begrijpen).

met een count tel je het aantal records dat aan je where/group by clause voldoet.

Verwijderd

Topicstarter
Op vrijdag 26 juli 2002 08:18 schreef sjako het volgende:

[..]

lees de laatste reply van MrX nog eens door (en nog probeer het dan ook te begrijpen).

met een count tel je het aantal records dat aan je where/group by clause voldoet.
dankje, jou uitleg gaf me meer inspiratie. Weet niet waarom maar't viel me gelijk op wat je bedoelde..

tnx :) ik ga er binnekort mee verder
Pagina: 1