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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
(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.