Avatar billede robson Nybegynder
15. juli 2003 - 13:04 Der er 4 kommentarer og
1 løsning

Join af 2 forspørgsler

Jeg arbejder med forespørgsler i Full-text index.
Jeg har 2 forspørgsler i 2 forskellige tabeller som jeg ønsker at samle til én forspørgsel med ét resultat.

Mine nuværende forespørgsler ser således ud:

SELECT * FROM CONTAINSTABLE (Tabel1, *, 'test') AS tb JOIN Tabel1 AS tbl ON tb.[KEY] = tbl.ArtikelID ORDER BY RANK DESC

SELECT * FROM CONTAINSTABLE (Tabel2, *, 'test') AS tb JOIN Tabel2 AS tbl ON tb.[KEY] = tbl.ArtikelID ORDER BY RANK DESC

Som det ses ønsker jeg at få en liste der er ORDER BY RANK, men jeg ønsker en ORDER BY af det samlede resultat!

Er der en der kan smelte disse 2 SQL sætninger sammen til en enkelt for mig?
Avatar billede dk_akj Nybegynder
15. juli 2003 - 13:18 #1
SELECT * FROM CONTAINSTABLE (Tabel1, *, 'test') AS tb JOIN Tabel1 AS tbl ON tb.[KEY] = tbl.ArtikelID
Union
SELECT * FROM CONTAINSTABLE (Tabel2, *, 'test') AS tb JOIN Tabel2 AS tbl ON tb.[KEY] = tbl.ArtikelID ORDER BY RANK DESC

//akj
Avatar billede robson Nybegynder
15. juli 2003 - 13:24 #2
det er jo pinligt... det var det hele og det virker - tak dk_akj - her er så lidt let tjente points  ;)
Avatar billede dk_akj Nybegynder
15. juli 2003 - 13:30 #3
Tak skal du have :-)

Et lille tip.. Hvis du har en langsom sql med en OR kan du prøve at lave den som en union istedet.

f.eks kan:
select * from brugere where navn = "hans" or navn = "kurt"

omskrives til:
select * from brugere where navn = "hans"
union
select * from brugere where navn = "kurt"

og _måske_ køre hurtigere.

//akj
Avatar billede robson Nybegynder
15. juli 2003 - 13:33 #4
super - jeg har ikke brugt UNION tidligere, men vil teste lidt mere med den - tak for tippet!!
Avatar billede dk_akj Nybegynder
15. juli 2003 - 13:37 #5
Den ligger simpelthen 2 resultatsæt i enden af hinanden. Du skal blot huske at der skal være lige mange felter i hver sql-statement

OK:
select navn,adresse from brugere where navn = "hans"
union
select navn,adresse from brugere where navn = "kurt"

IKKE OK:
select navn,adresse from brugere where navn = "hans"
union
select navn,adresse,alder from brugere where navn = "kurt"


Og så skal datatyperne være ens:

OK:
select navn,adresse from brugere where navn = "hans"
union
select navn,kælenavn from brugere where navn = "kurt"

IKKE OK:
select navn,adresse from brugere where navn = "hans"
union
select navn,alder from brugere where navn = "kurt"

//akj
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
Kurser inden for grundlæggende programmering

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