Thread View: nl.comp.programmeren
7 messages
7 total messages
Started by flor
Fri, 10 Apr 2009 14:54
sql probleem
Author: flor
Date: Fri, 10 Apr 2009 14:54
Date: Fri, 10 Apr 2009 14:54
16 lines
1710 bytes
1710 bytes
Ik zit vast met een query. Ik heb 2 tabellen: - table personen met velden persoon_id, naam - table waardes met velden waarde_id, persoon_id, waarde nu wil ik in 1 enkel query een lijst krijgen met het resultaat van alle subjects met hun naam en de waarde van parameter van de hoogste parameter_id iets in de trend van "SELECT p.naam, w.waarde FROM personen p, waardes w WHERE p.persoon_id = w.persoon_id /EN WHERE ENKEL DE HOOGSTE WAARDE VAN w.parameter_ID PER PERSOON WORDEN WEERGEGEVEN/". dat laatste lukt me niet. ik vermoed dat ik best met een subquery werk, maar ik zit vast iemand een idee?
Re: sql probleem
Author: dotnet
Date: Fri, 10 Apr 2009 15:03
Date: Fri, 10 Apr 2009 15:03
2 lines
1395 bytes
1395 bytes
select top 1 personen.naam, waardes.waarde from personen inner join waardes on waardes.persoon_id=personen.persoon_id order by waardes.xxxxxxx desc
Re: sql probleem
Author: Leihcim
Date: Sun, 12 Apr 2009 06:05
Date: Sun, 12 Apr 2009 06:05
23 lines
1990 bytes
1990 bytes
flor wrote: > Ik zit vast met een query. > Ik heb 2 tabellen: > > - table personen met velden persoon_id, naam > - table waardes met velden waarde_id, persoon_id, waarde > > nu wil ik in 1 enkel query een lijst krijgen met het resultaat van alle > subjects met hun naam en de waarde van parameter van de hoogste > parameter_id > > iets in de trend van "SELECT p.naam, w.waarde FROM personen p, waardes w > WHERE p.persoon_id = w.persoon_id /EN WHERE ENKEL DE HOOGSTE WAARDE VAN > w.parameter_ID PER PERSOON WORDEN WEERGEGEVEN/". > > dat laatste lukt me niet. > ik vermoed dat ik best met een subquery werk, maar ik zit vast > iemand een idee? Lichte gok: SELECT p.naam, max(w.waarde) FROM personen p, waardes w INNER JOIN waardes on w.persoon_id=p.persoon_id USING p.persoon_id = w.persoon_id group by p.persoon_id
Re: sql probleem
Author: flor
Date: Mon, 13 Apr 2009 13:33
Date: Mon, 13 Apr 2009 13:33
6 lines
1433 bytes
1433 bytes
dotnet wrote: > select top 1 personen.naam, waardes.waarde from personen inner join waardes > on waardes.persoon_id=personen.persoon_id order by waardes.xxxxxxx desc Bedankt voor de hulp. Dit geeft echter 1 resultaat, ik heb ��n resultaat per persoon nodig.
Re: sql probleem
Author: flor
Date: Mon, 13 Apr 2009 13:34
Date: Mon, 13 Apr 2009 13:34
27 lines
2282 bytes
2282 bytes
Leihcim wrote: > flor wrote: >> Ik zit vast met een query. >> Ik heb 2 tabellen: >> >> - table personen met velden persoon_id, naam >> - table waardes met velden waarde_id, persoon_id, waarde >> >> nu wil ik in 1 enkel query een lijst krijgen met het resultaat van alle >> subjects met hun naam en de waarde van parameter van de hoogste >> parameter_id >> >> iets in de trend van "SELECT p.naam, w.waarde FROM personen p, waardes w >> WHERE p.persoon_id = w.persoon_id /EN WHERE ENKEL DE HOOGSTE WAARDE VAN >> w.parameter_ID PER PERSOON WORDEN WEERGEGEVEN/". >> >> dat laatste lukt me niet. >> ik vermoed dat ik best met een subquery werk, maar ik zit vast >> iemand een idee? > > Lichte gok: > SELECT p.naam, max(w.waarde) FROM personen p, waardes w INNER JOIN waardes > on w.persoon_id=p.persoon_id USING p.persoon_id = w.persoon_id group by > p.persoon_id de max(w.waarde) geeft een error: de andere velden zijn dan niet "part of an aggregate function"
Re: sql probleem
Author: Mathijs
Date: Tue, 14 Apr 2009 08:56
Date: Tue, 14 Apr 2009 08:56
22 lines
1697 bytes
1697 bytes
flor schreef: > Ik zit vast met een query. > Ik heb 2 tabellen: > > - table personen met velden persoon_id, naam > - table waardes met velden waarde_id, persoon_id, waarde > > nu wil ik in 1 enkel query een lijst krijgen met het resultaat van alle > subjects met hun naam en de waarde van parameter van de hoogste > parameter_id > Gokje: select p.naam, max(w.waarde) from waardes w, personen p where w.persoon_id=p.persoon_id group by p.naam Groeten, Mathijs (als je create-statements en wat insert-statements voor test data meepost, dan heb je kans dat je vraag beter beantwoord wordt)
Re: sql probleem
Author: Moi
Date: Thu, 16 Apr 2009 17:57
Date: Thu, 16 Apr 2009 17:57
47 lines
2304 bytes
2304 bytes
On Tue, 14 Apr 2009 10:56:50 +0200, Mathijs wrote: > flor schreef: >> nu wil ik in 1 enkel query een lijst krijgen met het resultaat van alle >> subjects met hun naam en de waarde van parameter van de hoogste >> parameter_id >> >> > Gokje: > > select p.naam, max(w.waarde) > from waardes w, personen p > where w.persoon_id=p.persoon_id > group by p.naam > > Groeten, > Mathijs (als je create-statements en wat insert-statements voor test > data meepost, dan heb je kans dat je vraag beter beantwoord wordt) Bijna goed. Dit werkt alleen als p.naam een kandidaatsleutel is. Waarschijnlijk echter is p.persoons_id de sleutel en is p.naam functioneel afhankelijk. (het zou dus kunnen zijn dat er twee verschillende personen zijn die 'Jansen' heten) Een oplossing: ... GROUP BY p.persoons_id, p.naam Andere oplossing: SELECT MIN(p.naam) , MAX(w.waarde) FROM waardes w, personen p WHERE w.persoon_id=p.persoon_id GROUP by p.persoons_id [ als persoons_id een PK is, is naam functioneel afhankelijk, en is er dus maar een naam mogelijk, gegeven het persoons_id. Dus MAX(naam) == MIN (naam) ] [er zijn nog meer oplossingen denkbaar] HTH, AvK
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads