Avatar billede misbruger Nybegynder
28. juli 2004 - 09:03 Der er 13 kommentarer og
1 løsning

Join lidt hjælp

Jeg skal lave et join, som jeg ikke kan få til at virke...

Nedenståedende SQL joiner alle mine tabeller med deres respektive PK og FK

SELECT  *
FROM    Images, ImageTypes, ImageCategories, ProductImages, Products
WHERE  Images.Type = ImageTypes.Indeks
AND    ImageTypes.Category = ImageCategories.Indeks
AND    ProductImages.Image = Images.Indeks
AND    ProductImages.Product = Products.Indeks

Jeg skal bruge alle ImageTypes, hvor ImageCategories.Name = "Product", også selv om der ikke er et ProductImage med den
aktuelle ImageType
Altså et eller andet form for oouter join, men jeg kan sq ikke få det til at spille....

Thanx!
Avatar billede arne_v Ekspert
28. juli 2004 - 10:22 #1
Prøv:

SELECT  *
FROM ((Images JOIN ImageTypes ON Images.Type = ImageTypes.Indeks )
    LEFT JOIN ProductImages ON ProductImages.Image = Images.Indeks)
    LEFT JOIN Products ON ProductImages.Product = Products.Indeks
WHERE ImageCategories.Name = 'Product'
Avatar billede misbruger Nybegynder
28. juli 2004 - 10:26 #2
Mangler ImageCategories
Avatar billede arne_v Ekspert
28. juli 2004 - 10:30 #3
SELECT  *
FROM (((Images JOIN ImageTypes ON Images.Type = ImageTypes.Indeks )
    JOIN ImageCategories ON ImageTypes.Category = ImageCategories.Indeks)
    LEFT JOIN ProductImages ON ProductImages.Image = Images.Indeks)
    LEFT JOIN Products ON ProductImages.Product = Products.Indeks
WHERE ImageCategories.Name = 'Product'
Avatar billede misbruger Nybegynder
28. juli 2004 - 10:39 #4
Den løser ikke problemet...

Jeg har et 5 produkter, hvori 1 af dem mangler et af billederne (Images og ProductImages eksistere ikke for den ImageTypes)

Det skulle gerne give en row, hvor både ImageCategories, ImageTypes og Products værdier er med, men ingen værdier i Images og ProductImages.
Avatar billede arne_v Ekspert
28. juli 2004 - 10:46 #5
I dit oprindelige spørgsmål var det kun ProductImage der manglede ...

SELECT  *
FROM (((Images RIGTH JOIN ImageTypes ON Images.Type = ImageTypes.Indeks )
    JOIN ImageCategories ON ImageTypes.Category = ImageCategories.Indeks)
    LEFT JOIN ProductImages ON ProductImages.Image = Images.Indeks)
    LEFT JOIN Products ON ProductImages.Product = Products.Indeks
WHERE ImageCategories.Name = 'Product'
Avatar billede misbruger Nybegynder
28. juli 2004 - 11:07 #6
Jeg får stadig ikke den sidste post med....
Avatar billede misbruger Nybegynder
28. juli 2004 - 11:27 #7
Hvis det er til nogen hjælp...

http://www.dope.dk/db_model.gif
Avatar billede misbruger Nybegynder
28. juli 2004 - 14:05 #8
Her er hvad jeg får ud af Query analyser....

Server: Msg 107, Level 16, State 3, Line 1
The column prefix 'Images' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Line 1
The column prefix 'Images' does not match with a table name or alias name used in the query.
Avatar billede arne_v Ekspert
28. juli 2004 - 18:59 #9
Den siger at du ikke har en tabel ved navn Images !
Avatar billede misbruger Nybegynder
29. juli 2004 - 09:06 #10
Tja det er umiddelbart også sådan jeg tolker det....

Men det er der altså...
Og hvis jeg afvikler din sql i Enterprise Manager, så omformer den koden, og kan sagtens kører den. :(Bare ikke med det rigtige resultat....)

Jeg tror måske at jeg ikke har forklaret mig godt nok....

For hver Products ønsker jeg at få vist en post for hver ImageTypes der er, endvidere skal relationerne mellem Products og ImageTypes (ProductImages/Images) vises såfremt der er nogen.

Giver det bedre mening ?

Thx!
Avatar billede misbruger Nybegynder
29. juli 2004 - 09:53 #11
Altså...

Jeg har 2 Products (Pro1 og Pro2)
Jeg har 3 ImageTypes (imgMain, imgAction, imgThumb)
Pro1 har et imgMain og et imgAction
Pro2 har et imgMain

Såfremt jeg lave mit join og valgte følgende felter....
SELECT Products.Name AS ProName, Images.Path, ImageTypes.Name AS ItName, ImageCategories.Name AS IcName FROM Yadida JOIN etc...

Så skal resultatet se nogenlunde sådan ud....

ProName  Path                ItName        IcName
-----------------------------------------------------
Pro1    img/Main_pro1.gif  ImgMain        Product
Pro1    img/Act_pro1.gif    ImgAction      Product
Pro1    NULL                ImgThumb      Product
Pro2    img/Main_pro2.gif  ImgMain        Product
Pro2    NULL                ImgAction      Product
Pro2    NULL                ImgThumb      Product

Ved godt at ovenstående er fiktivt, men det kan måske være en hjælp til at forstå mig.
Avatar billede misbruger Nybegynder
10. august 2004 - 15:07 #12
Hej Arne

Jeg fandt ikke den mest geniale løsning, så det endte med et loop ;)

Men tak for din hjælp, og smid lige et svar, så deler vi i porten!
Avatar billede arne_v Ekspert
10. august 2004 - 17:06 #13
ok
Avatar billede misbruger Nybegynder
11. august 2004 - 09:56 #14
Takker
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