Avatar billede benne_ Nybegynder
29. april 2004 - 10:57 Der er 5 kommentarer og
2 løsninger

SELECT med krydscheck på anden tabel

Jeg skal hente alt indholdet fra en tabel (SELECT *), men kun WHERE et bestemt ID også er repræsenteret i en anden database - dvs. hent kun de poster, hvor ID'et også er at finde i en anden tabel...

Hvordan kan jeg stille en Stored Procedure således?
Avatar billede pierrehusted Nybegynder
29. april 2004 - 11:03 #1
Det behøver vel ikke være en Stored Procedure. Du kan lave selve querien sådan her:


SELECT * FROM Tabel1
WHERE id IN (SELECT id FROM Maskinnavn.databasenavn.brugernavn.tabel2)


Det kræver så at Maskinnavn er en Linked Server. Linked Servers sætter du gennem Enterprise Manager under <Security> - <Linked Servers>.

Nogle gange skal man vist ikke have brugernavnet med. Ikke helt 100% sikker på det.
Avatar billede kelo Nybegynder
29. april 2004 - 11:03 #2
select * from table1
where id in (select id from table2 where .... )
Avatar billede kelo Nybegynder
29. april 2004 - 11:04 #3
hehe lidt forsent på den ;P
Avatar billede benne_ Nybegynder
29. april 2004 - 11:05 #4
Alle vores requests ligger i SPer for at simplisere opdatering ved databasenavn der skifter m.m. Prøver lige
Avatar billede proaccess Nybegynder
29. april 2004 - 11:06 #5
Hvad med at bruge et JOIN?  (Eller går det ikke i MS SQL?)

SELECT Tabel1.*
FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.ID=Tabel2.ID
Avatar billede pierrehusted Nybegynder
29. april 2004 - 11:08 #6
Jeg tror faktisk SQL-serveren gør det samme ved

SELECT * FROM Tabel1
WHERE id IN (SELECT id FROM Maskinnavn.databasenavn.brugernavn.tabel2)

som den gør ved

SELECT * FROM Tabel1 t1
JOIN Maskinnavn.databasenavn.brugernavn.tabel2 t2
ON t1.id = t2.id


Men den første udgave er efter min mening nemmere at læse for den næste programmør, som skal rette i programmet.
Avatar billede ldanielsen Nybegynder
29. april 2004 - 11:38 #7
Først og fremmest: Om det er lettere at læse er et usædvanligt dårligt argument for at vælge en syntaks!

Og Syntaksen er:

SELECT Tabel1.* FROM Maskinnavn.databasenavn.brugernavn.Tabel1 INNER 
JOIN Maskinnavn.databasenavn.brugernavn.tabel2
ON Maskinnavn.databasenavn.brugernavn.Tabel1.id = Maskinnavn.databasenavn.brugernavn.id

Denne syntaks er meget mindre tung for serveren end den med IN.

Jeg kan ikke lige gennemskue det med at lave den til SP
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