SQL: Vilken join istället för subquery?
Tja!
Jag verkar ha lite hjärnsläpp. Jag vill enbart visa bilder som ännu INTE har bifogats i ett specifikt nyhetsinlägg.
Har 2st tabeller som problemet berör, det ena är:
NewsPosts Där den enda relevanta kolumen är:
PostID
Tabellen för bifogade bilder är:
NewsPostsPhotos Med kolumnerna:
PostPhotoPostID (nyhetsinlägget som bilden är bifogad i)
PostPhotoID (bilden som är bifogad)
NewsPosts är en gemensam tabell för både nyhetsinlägg & uppladdade bilder (url till bilderna på servern), enda skillnaden mellan dom 2 är att bilderna har en PostType = 'Photo' & nyhetsinläggen har PostType = 'Post'
Om jag vill bifoga en redan uppladdad bild till ett nyhetsinlägg så lägger jag ju bara in relevant info i NewsPostsPhotos så 1 bild kan vara bifogad till flera nyhetsinlägg.
MEN när man skall bifoga bilder inne i ett nyhetsinlägg så vill jag inte att bilderna som redan har bifogats till nyhetsinlägget skall synas.
Den queryn jag kör nu är:
SELECT
*
FROM
NewsPosts
WHERE
PostID NOT IN (
SELECT
PostPhotoID
FROM
NewsPostsPhotos
WHERE
PostPhotoPostID = :PostPhotoPostID
)
AND
PostType = 'Photo'
:PostPhotoPostID är PostID för det nyhetsinlägget man för tillfället kollar på.
Usch vad otydligt & rörigt detta blev.
Subqueryn böjar bli relativt slö trots att jag har index på det som behövs, tänkte testa om jag kan få lite bättre prestanda med joins istället men får inte till min join query.
Har testat flera olika, tex:
SELECT
*
FROM
NewsPosts
LEFT JOIN
NewsPostsPhotos ON PostID = PostPhotoID
WHERE
PostPhotoPostID NOT IN (:PostPhotoPostID)
AND
PostType = 'Photo'
Detta fungerar NÄSTAN, visst, den visar bilder som inte redan är bifogade i nyhetsinlägget & visar inte bilder som redan är bifogade MED UNDANTAG för dom bilderna som också råkar vara bifogade 2 ggr. Dessutom, säg i nyhetsinlägg som inte har några bifogade bilder alls så kommer ju vissa bilder att dupliceras så många gånger som dom har blivit bifogade, så har dom blivit bifogade i 5 nyhetsinlägg så kommer ju bilderna att visas 5 ggr
Så japp, kan någon peka mig åt rätt håll för nu har det blivit lite väl galet
Hur kan syltkakor överleva i det vilda utan ögon?