[Access] Query Distinct werkt niet???

Pagina: 1
Acties:

  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
gegeven deze query:

code:
1
2
3
SELECT DISTINCT (set_prijs.setid), set_prijs.prijs, set_prijs.uid, set_prijs.link
FROM set_prijs
WHERE (set_prijs.shopid=1) AND (set_prijs.prijs>0);


Ik krijg echter toch als resultaat:
setid prijs uid link
1 € 124,99 1 http://shop.lego.com/product.asp?p=7261
1 € 124,99 357 http://shop.lego.com/prod...asp?p=7261&cn=226&d=5&t=3
1 € 124,99 383 http://shop.lego.com/prod...asp?p=7261&cn=226&t=3&d=5
2 € 9,99 2 http://shop.lego.com/product.asp?p=8762
2 € 9,99 358 http://shop.lego.com/prod...asp?p=8762&cn=225&d=6&t=3
2 € 9,99 442 http://shop.lego.com/prod...asp?p=8762&cn=225&t=3&d=6
3 € 3,49 3 http://shop.lego.com/product.asp?p=7235

Ik gebruik MS Access 2003

Of ik zie iets over het hoofd, of Access doet vaag :s

Cogito Ergo Credo


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Access doet precies wat je vraagt :)

DISTINCT geldt voor de hele rij, ik zie geen dubbele resultaten in je resultset. Jij wilt denk ik maar 1 prijs zien. Je hebt dan GROUP BY nodig: P&W FAQ - SQL

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:43
Wat is er fout ? Je hebt toch - zoals P_de_B al zegt - geen enkele dubbele rij ?

Als je slechts één prijs wilt zien, heb je naast group by ook nog een aggregate functie nodig over die prijs (MIN, MAX, AVG)

https://fgheysels.github.io/


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
whoami schreef op donderdag 18 augustus 2005 @ 12:47:
Wat is er fout ? Je hebt toch - zoals P_de_B al zegt - geen enkele dubbele rij ?

Als je slechts één prijs wilt zien, heb je naast group by ook nog een aggregate functie nodig over die prijs (MIN, MAX, AVG)
Ik wil geen disticnt prijs zien, ik krijg meerdere keren dezelfde set terug en daar deed ik de distinct op. Prijs is niet het probleem, setid is het probleem!!!

[ Voor 6% gewijzigd door jopiek op 18-08-2005 13:01 ]

Cogito Ergo Credo


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

En hoe wil je Access wijsmaken welke rij je wilt zien? Access doet precies wat hij je vraagt; met distinct laat je unieke rijen zien, niet unieke kolommen

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Boss
  • Registratie: September 1999
  • Laatst online: 06:46

Boss

+1 Overgewaardeerd

Dan moet je dat veld niet opvragen. ID zal immers voor ieder record anders zijn, en dus je distinct in de war schoppen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 12:51

Dido

heforshe

jopiek schreef op donderdag 18 augustus 2005 @ 13:01:
Ik wil geen disticnt prijs zien, ik krijg meerdere keren dezelfde set terug en daar deed ik de distinct op. Prijs is niet het probleem, setid is het probleem!!!
De vraag is dan dus inderdaad altijd: Welke rij wil je zien van de drie die je terugkrijgt.

Dat vertel jij access niet, dus gaat ie (gelukkig!!!) dat niet zelf beslissen.

Dus, heel simpel: jij vindt dat je van de bovenste drie regels er maar 1 wilt zien. Welke, en waarom die?

Wat betekent mijn avatar?


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
hmm, idd heb ik ff niet er aangedacht dat ie het veld niet uniek kan maken, ik ben op zoek naar een subquery dat zal wel het gewenste resultaat opleveren (weet dat 't een slordige query is, maar ik ken de data en weet dat het zo doet wat ik nodig heb):

code:
1
2
3
4
SELECT set_prijs.setid, set_prijs.uid, set_prijs.prijs, set_prijs.link
FROM set_prijs
WHERE (set_prijs.shopid=1) AND (set_prijs.prijs>0) and set_prijs.setid IN 
(SELECT DISTINCT (set_prijs.setid) FROM set_prijs)


iig bedankt voor meedenken, ik had ff mutual sarvation in m'n hersentjes :p

Cogito Ergo Credo


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 12:51

Dido

heforshe

Dat gaat nog steeds niet werken, hoor.

Welke van de eerste drie regels wil je nou hebben, en waarom?

Wat betekent mijn avatar?


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
jopiek schreef op donderdag 18 augustus 2005 @ 13:10:
hmm, idd heb ik ff niet er aangedacht dat ie het veld niet uniek kan maken, ik ben op zoek naar een subquery dat zal wel het gewenste resultaat opleveren (weet dat 't een slordige query is, maar ik ken de data en weet dat het zo doet wat ik nodig heb):

code:
1
2
3
4
SELECT set_prijs.setid, set_prijs.uid, set_prijs.prijs, set_prijs.link
FROM set_prijs
WHERE (set_prijs.shopid=1) AND (set_prijs.prijs>0) and set_prijs.setid IN 
(SELECT DISTINCT (set_prijs.setid) FROM set_prijs)
Je krijgt nu gewoon dezelfde resultaten hoor. JIJ moet de database vertellen welke uid, prijs en link je wilt voor iedere setid. Dit door je door GROUP BY en aggregate functies te gebruiken in je query. In mijn eerste post heb ik een linkje naar het gebruik van GROUP BY opgenomen. Ik zou je willen aanraden dit even te lezen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • jopiek
  • Registratie: September 2000
  • Laatst online: 30-03 18:57

jopiek

Tja... 'ns ff denken.

Topicstarter
Dit is de correcte, daar ben ik 100% zeker van, sorry om jullie lastig gevallen te hebben, het werkt nu prima.

Cogito Ergo Credo

Pagina: 1