[sql] query lukt niet *

Pagina: 1
Acties:

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
ik heb een tabel met een hele boel links, nu wil ik daaruit selecteren welke het vaakst voor komt en hoevaak.

hoe doe ik dit met sql?
code:
1
2
3
4
5
6
7
8
9
CREATE TABLE `pagpagina` (
  `pagid` int(10) unsigned NOT NULL auto_increment,
  `pagsessionid` varchar(50) default NULL,
  `pagurl` varchar(255) default NULL,
  `pagQuery_string` longtext,
  `pagrequest_method` varchar(5) default NULL,
  `pagtijd` datetime default NULL,
  PRIMARY KEY  (`pagid`)
) TYPE=MyISAM;

dat is dus mijn tabel

nu wil ik dus kijken wat de meest voorkomen de waarde in pagurl is. En ook hoevaak.

Ik kan er niet echt uit komen met MAX en GROUP BY, jullie?

  • BlauweFles
  • Registratie: Maart 2000
  • Niet online
<<herstelwerkzaamheden>>
Zo zou je iig de pagurl moeten krijgen volgens mij.
code:
1
2
3
4
5
6
select pagurl
from pagpagina
group by pagurl
having count(*) = (select max(count(*))
             from pagpagina
             group by pagurl))

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Met een select, een MAX() functie, een group by en een LIMIT of TOP.

https://fgheysels.github.io/


  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
<<herstelwerkzaamheden>>
:? wat kan ik hiermee?

  • BlauweFles
  • Registratie: Maart 2000
  • Niet online
Op maandag 25 februari 2002 19:26 schreef Devilfish het volgende:

[..]

:? wat kan ik hiermee?
Ja die ene klopte niet.
Kijk nu nog eens.

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.47-nt]You have an error in your SQL syntax near 'select max(count(*D) from pagpagina group by pagurl))' at line 1

/stats/index.asp, line 48

  • johnny7
  • Registratie: November 2000
  • Laatst online: 07-11-2023
Volgens mij kun je geen select in een select doen in mysql.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Op maandag 25 februari 2002 20:06 schreef Devilfish het volgende:
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[MySQL][ODBC 3.51 Driver][mysqld-3.23.47-nt]You have an error in your SQL syntax near 'select max(count(*D) from pagpagina group by pagurl))' at line 1

/stats/index.asp, line 48
Een syntax error kan je toch zelf wel oplossen zeker;
code:
1
2
3
4
5
select pagurl
from pagpagina
group by pagurl
having count(*) = (select max(count(*))
             from pagpagina)

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Op maandag 25 februari 2002 20:09 schreef johnny7 het volgende:
Volgens mij kun je geen select in een select doen in mysql.
Ja, volgens mij is het ook niet mogelijk.

https://fgheysels.github.io/


  • BlauweFles
  • Registratie: Maart 2000
  • Niet online
Ja hallo ik dacht dat we het over echt sql hadden

Ik hou al op ;) :P

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
echt sql? mysql wordt de ene keer hier de hemel in gezongen, de andere keer afzaagd...

maar goed vind mysql al een hele verbetering ten opzichte van een access database

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Voor subselects: postgresql

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 09-09 15:42
SELECT COUNT(*D FROM pagpagina GROUP BY pagurl geeft je de aantallen van de pagurl in je tabel, of je ook MAX Count(*D mag doen weet ik niet

Verwijderd

Degene die mysql de hemel in prijzen hebben waarschijnlijk niet veel met andere databases gewerkt (of wel met access >:) ).

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Op maandag 25 februari 2002 21:43 schreef _-= Erikje =-_ het volgende:
SELECT COUNT(*D FROM pagpagina GROUP BY pagurl geeft je de aantallen van de pagurl in je tabel, of je ook MAX Count(*D mag doen weet ik niet
volgens mij wel. Count() returned een waarde en die waarde kun je dan weer gebruiken in een MAX(). Dit geeft geen probleem.

https://fgheysels.github.io/


  • BlauweFles
  • Registratie: Maart 2000
  • Niet online
Op maandag 25 februari 2002 20:33 schreef Devilfish het volgende:
echt sql? mysql wordt de ene keer hier de hemel in gezongen, de andere keer afzaagd...
Ach niks ten nadele van mysql, maar een subselect is toch basic sql dat mag je toch ondersteunen. Ik vraag me alleen af hoe ik die count er nou bij ga krijgen, moet kunnen.

Ik heb tot op heden alleen maar met Oracle SQL gewerkt en aangezien de vraag over sql ging, ging ik er voor het gemak maar vanuit dat het over Oracle SQL ging.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Je kunt natuurlijk zo iets doen:
code:
1
2
3
SELECT TOP 1 COUNT(*) as cnt
FROM table
ORDER BY cnt DESC

https://fgheysels.github.io/


  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
waar gaat die 1 uit TOP 1 over? kan op mysql.com niet iets zinnigs er over vinden

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 16:08
SELECT COUNT(*D as cnt,pagurl FROM pagpagina group by pagurl ORDER BY cnt DESC

das de uiteindelijk code die werkt...

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Dan krijg je wel een recordset terug met meer dan 1 record. Als je maar het eerste record nodig hebt, is het imo beter om uw recordset te beperken tot dat ene record. Dat kun je doen met LIMIT of met TOP.
Je kijkt best de MySQL manual daarvoor na, want ik heb geen ervaring met MySQL.
die sql-code uit m'n vorige post was dus ook maar eerder pseudo-sql en niet kant-en-klaar sleur'n pleur code

https://fgheysels.github.io/

Pagina: 1