Toon posts:

[SQL] GROUP BY, DISTINCT op één kolom

Pagina: 1
Acties:
  • 191 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb de volgende kolommen:

- Id
- Kop
- Naam

En ik wil de DISTICT of GROUP BY functie toepassen op alleen de kolom Kop. Vanzelfsprekend krijg ik met een basis DISTINCT of GROUP BY alles terug omdat de Id uniek is.

Iemand een idee?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Welke query gebruik je hiervoor, want alleen deze tekst komt al heel gauw over als "kan iemand even deze (basis) query voor mij maken" :)

[ Voor 61% gewijzigd door BtM909 op 24-07-2006 13:54 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 23:43
group by kop?

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Verwijderd

Topicstarter
BtM909 schreef op maandag 24 juli 2006 @ 13:53:
Welke query gebruik je hiervoor, want alleen deze tekst komt al heel gauw over als "kan iemand even deze (basis) query voor mij maken" :)
code:
1
2
SELECT DISTINCT Id, Kop, Naam
FROM verenigingen


code:
1
2
SELECT  Kop, Naam, Id
FROM verenigingen GROUP BY Kop

^^^^^^^^^^^^ werkt niet ^^^^^^^^^^^^^^

  • Kristof
  • Registratie: Januari 2002
  • Laatst online: 30-01 11:26

Kristof

is een Belgisch product

code:
1
2
SELECT DISTINCT Kop
FROM verenigingen

Te eenvoudig?

"You can get more with a kind word and a gun than you can with a kind word alone." - Al Capone


  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 23:43
Misschien moet je jezelf even inlezen over "group by", dan worden dit soort dingen een stuk makkelijker. Want zolang je niet begrijpt wat er gebeurd met zoiets kunnen we het wel gaan voorkauwen, maar daar schiet je niks mee op.

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Programming FAQ - SQL: Hoe werkt dat GROUP BY nu eigenlijk?

Groupen doe je op elk veld in je SELECT-clause dat niet een aggregate function is. Je moet dus groupen op Kop, Naam, Id. Echter, je krijgt dan nog steeds niet wat je hebben wil, omdat je niet aangeeft welk Id je hebben wil bij een bepaalde kop; hoe moet je database engine weten welk record hij moet kiezen om in je resultset te stoppen? Selecteer dus in plaats van Id eens MAX(Id) of iets anders dat relevant is voor je.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • wboevink
  • Registratie: September 2004
  • Laatst online: 09-02 17:21
SELECT v2.id, v2.kop, v1.naam
FROM verenigingen v1
INNER JOIN
(
SELECT DISTINCT kop, MIN(id) AS id
FROM verenigingen
GROUP BY kop
) v2
ON v1.id = v2.id

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

wboevink, leuk, een stukje code ;)

Wat doet het, en waarom, en heeft de TS dat wel nodig?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • wboevink
  • Registratie: September 2004
  • Laatst online: 09-02 17:21
kenneth schreef op maandag 24 juli 2006 @ 14:17:
wboevink, leuk, een stukje code ;)

Wat doet het, en waarom, en heeft de TS dat wel nodig?
Leek mij wel duidelijk, het doet wat er gevraagd werd :-) (zie eerste post)
En wat is TS? (ah Topic Starter denk ik)

Nou speciaal voor jou dan maar :-)

SELECT DISTINCT kop, MIN(id) AS id
FROM verenigingen
GROUP BY kop

Met de subqueury selecteer ik alle Unieke 'koppen' met daarbij 1 van de id's in dit geval de laagste.

SELECT v2.id, v2.kop, v1.naam
FROM verenigingen v1
INNER JOIN
(
SELECT DISTINCT kop, MIN(id) AS id
FROM verenigingen
GROUP BY kop
) v2
ON v1.id = v2.id

Ik join de tabel verenigingen op mijn subquery, om ook de 'naam' te kunnen krijgen.

[ Voor 59% gewijzigd door wboevink op 24-07-2006 14:39 ]

Pagina: 1