[mySQL] most recent year

Pagina: 1
Acties:
  • 208 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb de volgende tabel

idorganizationidyearpropertyapropertybpropertyc


Van de verschillende organisaties zijn gegevens bekend over verschillende jaren. bijvoorbeeld organisatie 1 tot 2003, maar organisatie 2 tot 2008.

Nu wil ik bij voorkeur in 1 query selecteren wat de gegevens van een organisatie zijn in het van hem laatst bekend jaar. Voorbeeld resultaat:

Organisatie 12003100200300
Organisatie 22008500300900


Hoe maak hiervoor de juiste query?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 10 november 2009 @ 16:24:
Hoe maak hiervoor de juiste query?
Wat heb je zelf al geprobeerd/gezocht/gevonden? En wat werkte er niet en waarom denk je dat 't niet werkte? Welke foutmelding(en) kreeg je?

Je bent bekend met aggregates?

[ Voor 16% gewijzigd door RobIII op 10-11-2009 16:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 17-09 16:09

NetForce1

(inspiratie == 0) -> true

Door gebruik te maken van 'group by' (zoekwoord (TM)).

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Met graggregeerde functies en group by kun je enkel de organisatie en het laatst bekende jaar ophalen. Om de bijbehorende properties op te halen zul je dingen met having of een subquery moeten doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SELECT * FROM tabelx GROUP BY organizationid;

Dan houd ik van alle organisaties de eerste entry over.

Ik wil dus groeperen op organisatie id, maar wel de entry over houden waar hun jaar het hoogste is. Dat ik iets met MAX moet gaan doen, heb ik bedacht. Maar ik krijg geregeld Invalid group function. Vermoedelijk geef niet de juiste query.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 10 november 2009 @ 16:42:
Vermoedelijk geef niet de juiste query.
Laat die query dan eens zien... Of dacht je dat wij een glazen bol hadden?

Overigens klopt de query die je nu post ook (eigenlijk) niet. Je moet in een Group By alle non-aggregated velden opnemen. Hoe werkt dat GROUP BY nu eigenlijk? Dat MySQL 't vreet is, wat mij betreft, gewoon verkeerd. Maar daar hebben we al genoeg over gediscussieerd en de meningen verschillen nogal eens.

[ Voor 47% gewijzigd door RobIII op 10-11-2009 16:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op dinsdag 10 november 2009 @ 16:35:
Met graggregeerde functies en group by kun je enkel de organisatie en het laatst bekende jaar ophalen. Om de bijbehorende properties op te halen zul je dingen met having of een subquery moeten doen.
Dus SELECT organizationid,MAX(year) FROM tabelx GROUP BY organizationid is de subquery? Hoe zou mijn volledige query er dan uit moeten zien om de overige properties te kunnen zien?

[ Voor 4% gewijzigd door Verwijderd op 10-11-2009 16:45 ]


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 17-09 16:09

NetForce1

(inspiratie == 0) -> true

Janoz schreef op dinsdag 10 november 2009 @ 16:35:
Met graggregeerde functies en group by kun je enkel de organisatie en het laatst bekende jaar ophalen. Om de bijbehorende properties op te halen zul je dingen met having of een subquery moeten doen.
Ik probeerde ook niet volledig te zijn hier, alleen TS in de juiste richting te duwen. Het kwam op me over alsof hij niet de juiste termen/zoekwoorden wist.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 10 november 2009 @ 16:44:
Hoe zou mijn volledige query er dan uit moeten zien?
Kom op. Verwacht je nou echt dat we je handje gaan vasthouden? We gaan het hier in ieder geval niet voor je voorkauwen en je hebt nu voldoende links/tips gehad om eens (serieus) te gaan kijken naar hoe/wat aggregates werken. Open gerust een nieuw topic als je een serieuze poging hebt gedaan en een query kunt tonen waarmee je dat aantoont. Tot die tijd mag je zelf even documentatie gaan lezen en verder puzzelen ;)

[ Voor 19% gewijzigd door RobIII op 10-11-2009 16:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.