Avatar billede anhansen Nybegynder
30. marts 2004 - 07:37 Der er 16 kommentarer og
1 løsning

Hjælp til udtræk?

Hej eksperter.

Jeg skal have lavet et udtryk, hvor jeg skal have alle de emner som IKKE har en bestemt egenskab.

Jeg har knap 5000 emner - de 2500 emner er i en bestemt gruppe - og nu skal jeg lave et udtræk af de resterende 2500. Hvordan gør jeg det?

Jeg kan sagtens lave en søgning der finder de 2500 i gruppen - er der en måde hvorpå man kan få den "inverse" søgning - altså alt det som ikke er speciferet?
Avatar billede arne_v Ekspert
30. marts 2004 - 07:52 #1
WHERE gruppe <> X

måske
Avatar billede trer Nybegynder
30. marts 2004 - 07:53 #2
mener du noget som fx

select * from mintabel where NOT groupid =1
Avatar billede arne_v Ekspert
30. marts 2004 - 07:54 #3
Evt.

WHERE felt NOT IN (SELECT ...)
Avatar billede anhansen Nybegynder
30. marts 2004 - 08:14 #4
Det virker ikke helt - det der nærmer sig mest tror jeg er arnes sidste forslag.
Det jeg har :
4543 emner i alt der ikke er slettet.
2563 i gruppen.
Når jeg så laver en søgning som henter:
SELECT count(id) FROM tabel WHERE id NOT IN (SELECT som giver 2563 emner)
så får jeg 4542?!?

Og det er jo ikke helt rigtigt. Jeg kan ikke bruge den med <> eller NOT da emnerne kan være i flere grupper - og derfor kan et firma der er i gruppen godt være i en anden gruppe også - og ved den forespørgsel IKKE være i gruppen og komme med alligevel. Er det til at følge?
Avatar billede trer Nybegynder
30. marts 2004 - 08:21 #5
Du kan også bruge

where groupid not in (1,2,3,4,5)

det svarer til at at bruge OR
Avatar billede arne_v Ekspert
30. marts 2004 - 08:24 #6
Med NOT IN så bør du ikke få nogen af de id's som findes i sub selecten.
Avatar billede anhansen Nybegynder
30. marts 2004 - 08:52 #7
Det gør jeg heller ikke... smid et svar så får du points.. ;-)

(havde bare glemt at der stod count(...) i min select i NOT IN klausulen.. Du må ikke sige det til nogen.. sshh )
Avatar billede arne_v Ekspert
30. marts 2004 - 08:56 #8
:-)
Avatar billede anhansen Nybegynder
30. marts 2004 - 08:57 #9
Lige et sidespørgsmål... Hvis jeg nu skal have alle de emner som er i min forespørgsel lagt i en anden gruppe. Det vil sige insert alle de emner der er i den select.
Avatar billede arne_v Ekspert
30. marts 2004 - 09:00 #10
Ikke forstået.

Er det noget a la:

UPDATE tabel SET felt1=X WHERE felt2 NOT IN (SELECT ...)

du tænker på ?
Avatar billede anhansen Nybegynder
30. marts 2004 - 09:04 #11
Nej.. Det skal være insert, for der er ingen poster endnu. Jeg har en tabel der mapper id til grupper. Det vil sige poster er af typen (gruppeid, emneid).
Jeg vil nu lave en INSERT INTO tblEmneTilGruppe (148, emneid) WHERE emneid.. osv.

Det vil sige at emneid skal ændre sig ud fra den select jeg har. Kan man ikke det.
Jeg har jo en liste nu over emner. Dem vil jeg gerne have lagt ind i min tabel med emne_gruppe relation.
Avatar billede anhansen Nybegynder
30. marts 2004 - 09:07 #12
Kan jeg bare indsætte den select der vælger disse firmaer som punkt 2 i insert.
Avatar billede anhansen Nybegynder
30. marts 2004 - 09:10 #13
Det er åbenbart ikke tilladt... Så er det hurtigste vel at lave et lille program der kan gøre det. Når jeg har listen med emneid.
Og så indsætte dem en efter en..
Avatar billede trer Nybegynder
30. marts 2004 - 09:12 #14
Du kan sagtens lave en

insert into mintabel (kolonne,kolonne,kolonne)
select bla bla bla....


eneste er, at hvis du har en identity kolonne i mintabel, så skal du angive følgende før inserten

set identity_insert mintabel on
Avatar billede anhansen Nybegynder
30. marts 2004 - 09:25 #15
ok... så du mener hvis jeg skriver :
insert into tblemne_gruppe (148, emneID) SELECT emneid FROM osv fra før.

Så skulle det virke?
Avatar billede arne_v Ekspert
30. marts 2004 - 09:28 #16
Det må være:

INSERT INTO tblemne_gruppe (gruppeid, emneid) SELECT 148,emneid FROM ...
Avatar billede anhansen Nybegynder
30. marts 2004 - 09:45 #17
ok... Så ved jeg også det.

Nu lavede jeg det lige i et lille program.

Men til en anden gang ved jeg hvordan jeg kan gøre det her. Har altid brugt VALUES til insert - men godt at vide man kan bruge select.
Det gør det lidt nemmere.. hehe

Tak for hjælpen begge to.
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