Two things:
- Use
left outer joininstead ofinner jointo get all the listings, even with missing pictures. -
Use
coalesceto apply the defaultSELECT Listing.Title , Listing.MLS , Pictures.PictureTH , coalesce(Pictures.Picture, 'default.jpg') as Picture , Listing.ID FROM Listing LEFT OUTER JOIN Pictures ON Listing.ID = Pictures.ListingID
EDIT To limit to one row:
SELECT Listing.Title
, Listing.MLS
, Pictures.PictureTH
, coalesce(Pictures.Picture, 'default.jpg') as Picture
, Listing.ID
FROM Listing
LEFT OUTER JOIN Pictures
ON Listing.ID = Pictures.ListingID
WHERE Pictures.ID is null
OR Pictures.ID = (SELECT MIN(ID)
FROM Pictures
WHERE (ListingID = Listing.ID)))