我有以下SQL查询:左/右/内对MySQL的声明加入
SELECT band.id bid, band.name, bandInfo.summary, bandImage.url bandImage,
user.username, user.online, userImage.url userImage
FROM bands AS band
INNER JOIN band_info AS bandInfo ON band.id = bandInfo.bid
LEFT JOIN band_images AS bandImage ON band.id = bandImage.bid
LEFT JOIN band_followers AS follower ON follower.bid = band.id
RIGHT JOIN users AS user ON user.id = follower.uid
INNER JOIN user_info AS userInfo ON userInfo.uid = user.id
LEFT JOIN user_images AS userImage ON user.id = userImage.uid
WHERE ((band.activated = 1) AND (user.activated = 1)) AND (bandInfo.language = 'fr')
ORDER BY band.name
“用户”表包含所有用户(一行=一个用户)
“USER_INFO”表包含所有关于用户的信息(一行=一个用户)
“user_images”表包含有关用户的所有图像(一行=一个用户)
“乐队”表包含了所有的乐队(一行=一个波段)
“band_info”表包含有关一个频带中的所有信息(多行用于一个频带由于语言)
“band_images”表包含有关频带中的所有图像(一行=一个频带)
“ band_followers'表包含用户和乐队之间的所有关系(一行=一个关系,所以有很多行包含相同的乐队ID但不是相同的用户ID)
我想检索所有乐队与他们的信息(INNER JOIN )即使乐队ID不在band_followers表中。即使他没有任何图像,我也想通过用户的信息(INNER JOIN)检索乐队ID在band_followers表中带有INNER JOIN的用户的信息(INNER JOIN)。
我的问题是就在JOIN关键字..我真的不知道,如果我要使用LEFT或RIGHT JOIN
谢谢!
更新应答:
SELECT band.id bid, band.name, bandInfo.summary, bandImage.url bandImage, user.username, user.online, userImage.url userImage
FROM bands AS band
INNER JOIN band_info AS bandInfo ON band.id = bandInfo.bid
LEFT JOIN band_images AS bandImage ON band.id = bandImage.bid
LEFT JOIN band_followers AS follower ON band.id = follower.bid
LEFT JOIN users AS user ON user.id = follower.uid AND user.activated = 1
LEFT JOIN user_info AS userInfo ON userInfo.uid = user.id
LEFT JOIN user_images AS userImage ON user.id = userImage.uid
WHERE (band.activated = 1) AND (bandInfo.language = 'fr')
ORDER BY band.name
谢谢大家
这是正确的答案,谢谢! – everytimeicob