Toon posts:

[MySql] Duplicate probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey allemaal,

ik zit met de volgende vraag:

Ik heb een database die er zo uitziet

Tabel: leden
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
----------------------------------------------------------------------
| Voornaam | Achternaam | Jaar_van_aankomst |
----------------------------------------------------------------------
| Pietje       | Puk             | 1990                       |
----------------------------------------------------------------------
| Berend     | Zwart           | 1990                       |
----------------------------------------------------------------------
| Berend     | Zwart           | 1991                       |
----------------------------------------------------------------------
| Felix        | Vernooij       | 1989                       |
----------------------------------------------------------------------
| Berend     | Zwart           | 1989                       |
----------------------------------------------------------------------

Nu wil ik graag een query uitvoeren waarbij ik het volgende resultaat krijg:
code:
1
2
3
4
5
6
7
8
9
----------------------------------------------------------------------
| Voornaam | Achternaam | Jaar_van_aankomst |
----------------------------------------------------------------------
| Pietje       | Puk             | 1990                       |
----------------------------------------------------------------------
| Felix        | Vernooij       | 1989                       |
----------------------------------------------------------------------
| Berend     | Zwart           | 1989                       |
----------------------------------------------------------------------

Dus alle unieke voor en achternamen, waarbij als er dubbele zijn in het resultaat alleen de row met het laagste jaar van aankomst wordt weergegeven.

Nu krijg ik het wel voor elkaar om de unieke namen eruit te krijgen (distinct/having) maar krijg ik het niet voor elkaar om te selecteren op het jaar van aankomst.

Kan iemand me helpen?

[ Voor 0% gewijzigd door een moderator op 11-12-2008 17:06 . Reden: Code tags toegevoegd... ]


  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
GROUP BY al geprobeerd?

  • susscorfa
  • Registratie: Augustus 2006
  • Laatst online: 07:28
max(jaarvanaankomst) in je select statement ?

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
kun je niks met MIN over dat jaartal?
Ja uiteraard, hij gebruikt HAVING..

[ Voor 71% gewijzigd door Y0ur1 op 11-12-2008 13:56 ]


  • Noork
  • Registratie: Juni 2001
  • Niet online
Met een group by, zie verder de FAQ voor de exacte werking hiervan: Programming FAQ - SQL

p.s. Is het niet handiger om b.v. een kolom met status (actief/inactief o.i.d.) toe te voegen? En gebruik maken van een uniek id?

  • 418O2
  • Registratie: November 2001
  • Laatst online: 10:56
SQL:
1
2
3
4
select
distinct concat(voornaam,achternaam), voornaam, achternaam, jaar_van_aankomst 
from bla
order by jaar_van_aankomst asc 


of zoiets?

[ Voor 57% gewijzigd door 418O2 op 11-12-2008 14:00 ]


  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
SQL:
1
2
3
4
5
6
SELECT 
    voornaam, achternaam, MIN(jaar_van_aankomst) as jaar_van_aankomst 
FROM 
    leden 
GROUP BY 
    voornaam, achternaam


Das toch wel vrij basic...

[ Voor 3% gewijzigd door Y0ur1 op 11-12-2008 14:13 ]


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:42
En met distinct moet je hier helemaal niet in de weer gaan, die laat alleen unieke rijen zien, dus als je de query van Catch22 uitvoert, krijg je alsnog alle leden met dezelfde naam en een verschillend jaartal, omdat jaar_van_aankomst verschilt en de rij dus niet uniek is. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • 418O2
  • Registratie: November 2001
  • Laatst online: 10:56
Jaap-Jan schreef op donderdag 11 december 2008 @ 14:18:
En met distinct moet je hier helemaal niet in de weer gaan, die laat alleen unieke rijen zien, dus als je de query van Catch22 uitvoert, krijg je alsnog alle leden met dezelfde naam en een verschillend jaartal, omdat jaar_van_aankomst verschilt en de rij dus niet uniek is. :)
unieke rijen met gelijke voor+achternaam

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 07:42
Hoe kom je daar bij? DISTINCT kijkt naar álle kolommen die genoemd worden in SELECT.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • 418O2
  • Registratie: November 2001
  • Laatst online: 10:56
Jaap-Jan schreef op donderdag 11 december 2008 @ 15:04:
Hoe kom je daar bij? DISTINCT kijkt naar álle kolommen die genoemd worden in SELECT.
Excuseer mijn domheid :)

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ook nagedacht over het feit dat een voornaam + achternaam niet altijd uniek is? Ik weet niet hoe groot je database is?
Pagina: 1