Avatar billede cdull Nybegynder
26. januar 2006 - 16:32 Der er 15 kommentarer og
1 løsning

Udtræk kun forskellige værdier.

Hvordan udtrækker man forskellige værdier.

har f.eks

id - id2 - value
1  - 1  - tal1
2  - 1  - tal1.2
3  - 2  - tal2
4  - 2  - tal2.1
5  - 2  - tal2.2
6  - 3  - tal3


Der vil jeg gerne have udtrukket alle value ud fra id2.
Men id2 må kun gå igen 1 gang. Dvs. når jeg får det ud skal det være id2 = 1,2,3 og deres value.


Nogen der lige hurtigt har en fiks løsning til dette?
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 16:34 #1
SLECT DISTINCT ID2 FROM tabel
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 16:34 #2
SELECT i stedet for SLECT
Avatar billede cdull Nybegynder
26. januar 2006 - 17:00 #3
perfekt. det er jo det jeg skal bruge.
Men hvad nu hvis jeg vil lave et udtræk hvor jeg skal have
ID, ID2 og value ud. I den rækkefølge.
Hvordan gør jeg så?
mit query ser sådan her ud.

select id, id2, value from testtabel

skal jeg så lave distinct foran id2, kan jeg ikke.
eller noget med where distinct id2?
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 17:03 #4
Orden af hvordan du får ting ud er ligegyldig men for at få distinct id2
skal din sætning være

select distinct id2, id, value from testtabel
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 17:03 #5
I hvilken en sammenhæng skal du bruge udtrækket ?
Avatar billede cdull Nybegynder
27. januar 2006 - 09:34 #6
Det jeg sådan set skal have lavet det er at jeg har en tabel som ser sådan her ud.



ID - GrundId - Index - Type - value



Da det er en omskrivning af system mod en ny database ved hjælp af Stored Procedures kan jeg ikke gøre det på andre måde end som følger.

select
tbl1.value1 = (select tbl2.value from tabel as tbl2 where tbl2.grundId = @parameter1 and tbl2.Index = tbl1.Index and type = 1),
tbl1.value2 = (select tbl2.value from tabel as tbl2 where tbl2.grundId = @parameter1 and tbl2.Index = tbl1.Index and type = 2),
tbl1.value3 = (select tbl2.value from tabel as tbl2 where tbl2.grundId = @parameter1 and tbl2.Index = tbl1.Index and type = 3),
tbl1.index from tabel as tbl1 where tbl1.GrundId = @parameter1


Det skal så være at der skal adskilles på index. Så alle værdier med index 1 f.eks bliver listet i det ene query, hvor type1 er value1 , type2 value2 osv.

Håber det giver nogen mening hehe. Eller i det mindste at man kan danne sig et blik over det jeg gerne vil have lavet.
Mange Tak.
Avatar billede cdull Nybegynder
27. januar 2006 - 09:38 #7
Har prøvet at lege lidt med det.
Select distinct id2 from tabel virker helt fint.
select distinct id2, id from tabel virker ikke.
Den sidste henter alle id ud, men jeg ville have at der kun hentes id ud hvor id2 er distinct. altså ligesom den første, bare plus de tilhørende id.
Avatar billede ldanielsen Nybegynder
27. januar 2006 - 12:24 #8
DISTINCT gælder alle kolonner.

Hvis du har denne tabel:

id2, id
-------
1, 1
1, 2
2, 5
2, 1
2, 3
3, 6
3, 1
------

Så giver "SELECT DISTINCT id2" jo

id2
----
1
2
3
----

Hvad skulle "SELECT DISTINCT id2, id" give, hvis det var som du ønsker det?
Avatar billede cdull Nybegynder
27. januar 2006 - 13:23 #9
Jeg vil have både id2 og id ud.
Så jeg ville få

id2
1
2
3

Men  deres tilhørende id'er.det kunne være en farve. ligegyldigt.
Skal sige at det er en skidt måde jeg skal gøre det på, men er nødsaget til dette.
Avatar billede ldanielsen Nybegynder
29. januar 2006 - 13:44 #10
hvert id2 har jo forskellige id'er. derfor kan du ikke få de oplysniger du skal bruge på kun 3 linier, med mindre du vil have dem kommaseparerede:

id2, id
-------
1, "1,2"
2, "1,3,5"
3, "1,6"
------
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 08:36 #11
hvad med:
select distinct id2, id, value from testtabel GROUP BY id2
Avatar billede cdull Nybegynder
30. januar 2006 - 13:48 #12
Det vil faktisk virke så længe at jeg ikke skal have nogle andre værdier ud.
Vil jeg nu have værdien type, kan jeg ikke det. får fejlen, it's invalid because it's not contained in and aggregate function or the group by clause.
Avatar billede dr_chaos Nybegynder
30. januar 2006 - 14:36 #13
du skal tilføje den til group by
select distinct id2, id, value, type from testtabel GROUP BY id2, type
Avatar billede ldanielsen Nybegynder
31. januar 2006 - 09:06 #14
dr chaos >

Hvis du har en GROUP BY skal alle felter i SELECT enten være inkludered i den, eller der skal bruges en "aggregate function", dvs. MAX, MIN, AVG eller lignende

Så du må undlade value og id fra dit sidste forslag
Avatar billede cdull Nybegynder
31. januar 2006 - 22:16 #15
Som ldanielsen siger skal alle etilføjes til group, men det virkede.
Dr Chaos, tak for hjælpen. Smider du lige et svar.
Avatar billede dr_chaos Nybegynder
03. februar 2006 - 20:47 #16
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester