Toon posts:

[SQL] Distinct probleem.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey!

Dit is eigenlijk wat ik wil:

SELECT DISTINCT NawBID, StandAntw1, StandAntw2
FROM SthAntwoorden
WHERE (NawSCode = 105)

Ik wil dus alleen maar unieke NawBID hebben. Er zitten dubbele tussen. Maar hij Distinct alleen als de StandAntw1 en StandAntw2 ook hetzelfde zijn.
Moet ik hier nu een extra query op los laten of is het ook anders mogelijk? Books online geeft mij geen duidelijk antwoord helaas.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Welke gegevens wil je dan precies hebben? Als er voor een en dezelfde NawBID meerdere waarden voor de overige velden zijn, welke rij verwacht je dan van de database?

Ik denk dus dat jou vraag onmogelijk is, tenzij je een bepaald soort GROUPing toepast, wat afhankelijk is van je StandAntw1, StandAntw2 en je uiteindelijke doel.

Kortom: (Waarschijnlijk) verkeer data-model, leg even wat meer uit over wat je wilt krijgen en wat de gegevens betkenen

|_____vakje______|


Verwijderd

Topicstarter
Ok, De NawBID is een bezoeker...
De StandAntw1 en 2 zijn antwoorden die ze hebben gegeven op een klein enquetetje.

Vb:

NawBID | StandAntw1 | StandAntw2
--------------------------------
12121 1 2
12122 2 1
12123 1 3
12123 1 2

Dus...
De bedoeling is dat er managementinformatie verscijnt.

Ik wil dus tellen hoeveel mensen er 1 hebben geantwoord op StandAntw1. In dit geval dus 2, want 12123 komt 2x voor, en deze moet er dus uitgefilterd worden.

Edit: Sorry dat de tabel er zo wazig uitziet...

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Wil je igv dubbele invoer dan wel 1 van de antwoorden verwerken?
En zo ja: welke?

Who is John Galt?


  • Tirillo
  • Registratie: Januari 2002
  • Niet online

Tirillo

Joker of Unauwen

Ben niet echt een sql-expert, maar volgens mij zou het moeten kloppen, snap iig niet waarom ie het anders alleen bij 2 dezelfde antwoorden doet.

Hoe kom je trouwens aan dubbele antwoorden?? Een id zou toch iets vrij unieks zijn zou je zo zeggen.

...


Verwijderd

Topicstarter
Het maakt mij niet uit welke van de 2 antwoorden verwerkt worden. Ik denk dat de eerste het duidelijkste is.

En het gaat mij niet om het feit dat een ID uniek hoort te zijn. Het gaat mij meer om het probleem zelf...

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Wat voor database gebruik je?

Who is John Galt?


Verwijderd

Topicstarter
Sorry, SQL Server 2000

  • Tirillo
  • Registratie: Januari 2002
  • Niet online

Tirillo

Joker of Unauwen

Zou kunnen dat het wat uitmaakt als je er haakjes omheen zet misschien..

Select (distinct NawID), ant1,ant2
.....
.....

...


Verwijderd

Topicstarter
Al geprobeerd. Helaas niet...

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Misschien werkt dit wel.. Het staat iig meestal niet vast welke van de 2 rijen je krijgt.

SELECT NawBID, StandAntw1, StandAntw2
FROM SthAntwoorden
WHERE (NawSCode = 105)
GROUP BY NawBID

Bah... smerig

|_____vakje______|


Verwijderd

DISTINCT geeft verschillende records; als SthAntw1 en SthAntw2 verschillen zijn dit verschillende records en geeft hij ze dus weer. Wat wil je nou precies? Het aantal mensen dat een bepaald antwoord gegeven heeft? Dan gebruik je toch COUNT en niet DISTINCT.

Edit: iets beter de vraag gelezen. Ik snap alleen niet waarom je SthAntw2 meeneemt als die er verder niet toe doet.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Het probleem is eigenlijk dat je ontwerp niet goed is.
Je hebt feitelijk geen unieke identificatie voor een record.
Nu kun je wel trucjes gebruiken om toch wat uit een query te krijgen maar die zijn platformafhankelijk.

Helaas spreek ik geen SQL Server dus kan ik die trucjes niet voor je ophoesten.

Alternatieven zijn natuurlijk:
-dubbele rijen verwijderen (zit je met hetzelfde probleem)
-voorkomen dat dubbele rijen ingevoerd worden (betere oplossing natuurlijk)
-beter ontwerpen :P

Als je toch een truc wilt gebruiken kijk dan naar pseudokolommen.

Who is John Galt?


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

code:
1
2
3
4
SELECT NawBID, max(StandAntw1), max(StandAntw2)
FROM   SthAntwoorden
WHERE  NawSCode = 105
GROUP BY NawBID

Een RDB kent geen eerste of laatste record, dus je kan niet meer spreken over de eerste invoer, tenzij je de datum en tijd van invoer ook vastlegt.
Nu wordt dus het maximale antwoord gekozen, maar je kan ook andere functies gebruiken.
Suc6
Pagina: 1