08. juli 2007 - 21:06Der 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
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
(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
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. :-)
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).
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.
Synes godt om
Ny brugerNybegynder
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.