Avatar billede thomic Nybegynder
08. juli 2007 - 21:06 Der er 4 kommentarer og
1 løsning

INNER JOIN ved UNION

Hej

Jeg har 4 sql tabeller ved bavn: Tabel1, tabel2, tabel3 og tabel4
Disse tables indeholder alle samme field-navne: id, navn og kategori.
Her bruger jeg så UNION til at "slå dem sammen".
Men hvad så, hvis jeg gerne vil have en inner join på de 4 tabeller?

Den skal således også hente en værdi fra tabel_katA, tabel_katB, tabel_katC og tabel_katD og sammenligne det med den tabel, der passer dertil.

Jeg prøvede:

SELECT id, navn, kategori FROM tabel1
INNER JOIN tabel_katA ON tabel1.kategori=tabel_katA.id
UNION
SELECT id, navn, kategori FROM tabel2
INNER JOIN tabel_katB ON tabel2.kategori=tabel_katB.id
UNION
SELECT id, navn, kategori FROM tabel3
INNER JOIN tabel_katC ON tabel3.kategori=tabel_katC.id
UNION
SELECT id, navn, kategori FROM tabel4
INNER JOIN tabel_katD ON tabel4.kategori=tabel_katD.id
ORDER BY kategori

Men så siger den bare:

The used SELECT statements have a different number of columns

- Hvordan skal man gribe det an?
Avatar billede arne_v Ekspert
09. juli 2007 - 01:54 #1
Du skal ikke bare have nogle parentser omkring ?

(SELECT id, navn, kategori FROM tabel1
INNER JOIN tabel_katA ON tabel1.kategori=tabel_katA.id)
UNION
(SELECT id, navn, kategori FROM tabel2
INNER JOIN tabel_katB ON tabel2.kategori=tabel_katB.id)
UNION
(SELECT id, navn, kategori FROM tabel3
INNER JOIN tabel_katC ON tabel3.kategori=tabel_katC.id)
UNION
(SELECT id, navn, kategori FROM tabel4
INNER JOIN tabel_katD ON tabel4.kategori=tabel_katD.id)
ORDER BY kategori
Avatar billede kjulius Novice
09. juli 2007 - 13:32 #2
Jeg vil tro, at det er fordi feltet id optræder både i tabel1/2/3/4 og i tabel_katA/B/C/D, og du derfor er nødt til at kvalificere feltnavnet (tabel1.id) - selv om fejlmeldingen i så fald ikke er helt logisk. :-)
Avatar billede thomic Nybegynder
12. juli 2007 - 13:56 #3
Jeg havde dummet mig:

Det var fordi, at de to tabeller ikke indeholdte de samme fields - som advarslen jo også siger.

Men tak for jeres forslag.
Avatar billede kjulius Novice
12. juli 2007 - 16:54 #4
Så kan din reelle forespørgsel da ikke have været den du præsenterede i spørgsmålet, for her er antallet af felter da de samme (tre felter: id, navn, katagori).
Avatar billede thomic Nybegynder
15. juli 2007 - 22:45 #5
Nej, jeg havde bare brugt et eksempel i mit indlæg - i min aktuelle problem-stilling havde jeg 6 tabeller, som skulle virke sammen med 6 andre tabeller - så jeg valgte bare at lave et nemt eksempel. Havde dog glemt, at jeg havde modificeret den ene af de 6 tabeller, så da jeg tog den ud af UNION, så virkede det.

Beklager misforståelsen.
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