好的,我在加入2个表时遇到问题(使用INNER JOIN)。第一个表包含类别列表(ecc。用于相册或博客帖子),而第二个表包含“数据”
我试过这样:
SELECT galeries_id, galeries_title,
photos.photos_id, photos.photos_gal_id, photos.photos_link
FROM galeries
INNER JOIN photos
ON galeries.galeries_id=photos.photos_gal_id
GROUP BY photos_gal_id
这给了我很好的结果,很好地加入我的桌子,正如我希望他们有一个关键的例子。
如果表“照片”没有包含“photos_gal_id”的行(例如“2”),那么即使它在galeries表中执行egzist,也不会返回该类别的任何类别(galeries_id,galeries_title)
这是合乎逻辑的,因为:
ON galeries.galeries_id=photos.photos_gal_id
现在我需要采用这部分来向我展示在第二张表中没有相关行的那些
我想要的结果是:
galeries_id galeries_title photos_id photos_link
1 blabla 3 test.jpg
2 bla bla2
3 etata 5 test.jpg
我希望我解释得足够好:) 谢谢..
答案 0 :(得分:27)
要保留照片中没有匹配ID的galeries
行,您需要使用LEFT JOIN
代替INNER JOIN
加入有关照片的照片:
SELECT galeries_id, galeries_title,
photos.photos_id, photos.photos_gal_id, photos.photos_link
FROM galeries
LEFT JOIN photos
ON galeries.galeries_id=photos.photos_gal_id
GROUP BY photos_gal_id
这会给你:
galeries_id galeries_title photos_id photos_link
1 blabla 3 test.jpg
2 bla bla2 NULL NULL
3 etata 5 test.jpg
如果您希望用空字符串替换NULL,可以使用:
SELECT
IFNULL(photos.photos_id, ''),
IFNULL(photos.photos_link, '')
答案 1 :(得分:2)
不会只是一个
LEFT JOIN photos
因为您希望这些记录无论是否充满?