[SQL] als code vaker voorkomt, dan specifieke regel nemen

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

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
Hey...

vraagje. Ik kom er ff niet uit en ook google en een GoT-search brengen me er ff niet. Ik heb een query waarin ik artikelen oproep. Als een bepaalde artikelcode vaker dan 1 keer voorkomt, wil ik degene waar veldX een bepaalde waarde heeft geselecteerd zien. Eigenlijk een soort gewogen distinct dus.
Iemand een ideetje?

My personal website


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 heeft nogal een beetje moeite met je post..
Ik kan hem moeilijk volgen. Kan je een klein voorbeeldje geven wat je precies wilt?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
keej dan.... doe ik hem nog een keer ;)

Ik heb een SQL query die 3 tabellen joined. Een van die tabellen is de tabel artikel. Een andere is inkoopgegevens. Een artikel kan meerdere inkoopgegevens hebben (lees: meerdere leveranciers.) Nou is het de bedoeling dat, als een artikel slechts één keer voorkomt, het gewoon wordt weergegeven (het veld voorkeur bevat dan een N). Op het moment dat een artikel meerdere keren voorkomt, moet alleen die regel genomen worden, waar het veld voorkeur een J bevat...
De where geldt dus eigenlijk alleen voor artikelen die vaker voorkomen. Of een distinct die in het geval van meerdere regels een parameter mee kan krijgen. Of zoiets :/

My personal website


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

Het eerste wat in me opkomst, is twee select querys maken en deze koppelen door middel van een union.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:30

Dido

heforshe

Omslachtig, maar zoiets?
code:
1
2
3
4
5
6
7
8
9
SELECT veld1, veld2
  FROM tabel1
 WHERE veld2 = waarde 
UNION
SELECT T1.veld1, T1.veld2
  FROM tabel1 as T1
 WHERE T1.veld1 NOT IN (SELECT T2.veld1
                          FROM tabel1 as T2
                         WHERE T2.veld2 = waarde)

Wat betekent mijn avatar?


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

edit:
laat maar...

[ Voor 93% gewijzigd door DeverauX op 13-02-2003 15:26 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Dat kan je doen door gebruik te maken van GROUP BY en HAVING COUNT
code:
1
2
3
4
SELECT artikelnummer
FROM artikeltabel
GROUP BY artikelnummer
HAVING COUNT(artikelnummer) >= 2

denk dat je daar er een end mee moet komen.

[ Voor 17% gewijzigd door Verwijderd op 13-02-2003 15:27 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:30

Dido

heforshe

Verwijderd schreef op 13 February 2003 @ 15:26:
Dat kan je doen door gebruik te maken van GROUP BY en HAVING COUNT
denk dat je daar er een end mee moet komen.

Dan heeft ie toch alleen maar degenen die vaker voorkomen :? Hij wil ook degenen die maar 1 keer voorkomen...

Wat betekent mijn avatar?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
Jurien: zoals ik zei moet een regel waar het artikel maar één keer voorkomt ook weergegeven worden, dus die count doet volgens mij de truuk niet. Ik ga wel eens even kijken hoe dat met die union zit...

My personal website


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 13 februari 2003 @ 15:26:
Dat kan je doen door gebruik te maken van GROUP BY en HAVING COUNT
code:
1
2
3
4
SELECT artikelnummer
FROM artikeltabel
GROUP BY artikelnummer
HAVING COUNT(artikelnummer) >= 2

denk dat je daar er een end mee moet komen.


Hiermee ga je idd die artikels gaan weergeven die meer dan 1 keer voorkomen, maar hoe ga je bepalen welke leverancier er moet getoond wroden?
Ttz, je moet ook nog rekening houden met dat veld 'voorkeur', en dat kan je niet in je having gebruiken, maar ook niet in je where.

https://fgheysels.github.io/


Verwijderd

Misschien maar een ideetje... zet default voorkeur op "J". Anders ga je misschien niet echt logisch te werk. Ja deze leverancier heeft geen voorkeur, maar dat komt omdat hij de enige is......

anders met union werken, haal alle producten op waarbij de having maar 1 is, daarna alle andere met join op dat voorkeurveld

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
Misschien maar een ideetje... zet default voorkeur op "J".
Dat zou ik heel graag willen doen, het is echter niet een database die ik gemaakt heb of mag onderhouden. Het is de database van Multivers, een administratiepakket. Exact, maar dan anders...
Ik heb een voorlopige oplossing waarbij ik selecteer op eerst artikelcode en dan AFLOPEND op voorkeur. Ik verwerk vervolgens regel voor regel alles, waardoor dus de regel waar J in voorkeur staat het laatst verwerkt wordt. En dus zullen de verwerkte gegevens die zijn die in de J-regel staan.... Niet de mooiste oplossing, maar voorlopig werkt het op deze manier.

[ Voor 2% gewijzigd door OZ-Gump op 13-02-2003 16:41 . Reden: Nooit mijn type-diploma gehaald... ]

My personal website


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:30

Dido

heforshe

Ik begrijp dat de UNION niet werkte?

Wat betekent mijn avatar?

Pagina: 1