[英]Inner join function duplicates content
My query duplicates the entries I get. 我的查询重复了我得到的条目。 I use two Inner join.
我使用两个内部联接。 The strange fact is that I made this code 6 months ago and, as far as I remember, it worked.
奇怪的事实是,我六个月前编写了此代码,据我所记得,它确实起作用了。 Now, I come back to my project and it does not work anymore (it duplicates)...
现在,我回到我的项目,它不再起作用了(重复)。
The Query : 查询:
$sql_principale_news = "SELECT sys_pre_values.LKey,bx_blogs_posts.PostUri,bx_blogs_posts.PostCaption,bx_blogs_posts.PostText,bx_blogs_posts.PostText,bx_blogs_posts.Categories,
bx_blogs_posts.PostDate,bx_blogs_posts.Views,bx_blogs_posts.CommentsCount,bx_blogs_posts.allowView,Profiles.Avatar,Profiles.ID,Profiles.FirstName,Profiles.LastName,Profiles.ProfileType
FROM bx_blogs_posts
INNER JOIN Profiles ON bx_blogs_posts.OwnerID=Profiles.ID AND Profiles.Status='Active'
INNER JOIN sys_pre_values ON bx_blogs_posts.NewsType=sys_pre_values.Value AND sys_pre_values.Value!=sys_pre_values.LKey
WHERE bx_blogs_posts.OpenNews=1
AND bx_blogs_posts.PostStatus='approval'
AND bx_blogs_posts.Categories IN ('".$innov24_config."')
AND (bx_blogs_posts.allowView=3
OR bx_blogs_posts.allowView=4
OR (bx_blogs_posts.allowView=5 AND bx_blogs_posts.OwnerID IN ('".$bigfriendlist."'))
OR bx_blogs_posts.allowView IN ('".$privacy_OthersToMe."')
OR bx_blogs_posts.allowView IN ('".$privacy_MeToOthers."'))
ORDER BY bx_blogs_posts.PostDate DESC LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."";
The résult : 结果 :
It duplicates each entry 3 times. 它将每个条目重复3次。
The problem 问题
If I delete the second inner join, there is no more duplicate. 如果删除第二个内部联接,则不再重复。
$sql_principale_news = "SELECT sys_pre_values.LKey,bx_blogs_posts.PostUri,bx_blogs_posts.PostCaption,bx_blogs_posts.PostText,bx_blogs_posts.PostText,bx_blogs_posts.Categories,
bx_blogs_posts.PostDate,bx_blogs_posts.Views,bx_blogs_posts.CommentsCount,bx_blogs_posts.allowView,Profiles.Avatar,Profiles.ID,Profiles.FirstName,Profiles.LastName,Profiles.ProfileType
FROM bx_blogs_posts
INNER JOIN Profiles ON bx_blogs_posts.OwnerID=Profiles.ID AND Profiles.Status='Active'
// DELETED CODE // INNER JOIN sys_pre_values ON bx_blogs_posts.NewsType=sys_pre_values.Value AND sys_pre_values.Value!=sys_pre_values.LKey// END DELETED CODE //
WHERE bx_blogs_posts.OpenNews=1
AND bx_blogs_posts.PostStatus='approval'
AND bx_blogs_posts.Categories IN ('".$innov24_config."')
AND (bx_blogs_posts.allowView=3
OR bx_blogs_posts.allowView=4
OR (bx_blogs_posts.allowView=5 AND bx_blogs_posts.OwnerID IN ('".$bigfriendlist."'))
OR bx_blogs_posts.allowView IN ('".$privacy_OthersToMe."')
OR bx_blogs_posts.allowView IN ('".$privacy_MeToOthers."'))
ORDER BY bx_blogs_posts.PostDate DESC LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."";
Does anyone could say why? 有谁能说为什么?
[EDIT] Here are the Tables structures [编辑]这是表格结构
you may use GROUP BY 您可以使用GROUP BY
try this 尝试这个
$sql_principale_news = "SELECT sys_pre_values.LKey,bx_blogs_posts.PostUri,bx_blogs_posts.PostCaption,bx_blogs_posts.PostText,bx_blogs_posts.PostText,bx_blogs_posts.Categories,
bx_blogs_posts.PostDate,bx_blogs_posts.Views,bx_blogs_posts.CommentsCount,bx_blogs_posts.allowView,Profiles.Avatar,Profiles.ID,Profiles.FirstName,Profiles.LastName,Profiles.ProfileType
FROM bx_blogs_posts
INNER JOIN Profiles ON bx_blogs_posts.OwnerID=Profiles.ID AND Profiles.Status='Active'
INNER JOIN sys_pre_values ON bx_blogs_posts.NewsType=sys_pre_values.Value AND sys_pre_values.Value!=sys_pre_values.LKey// END DELETED CODE //
WHERE bx_blogs_posts.OpenNews=1
AND bx_blogs_posts.PostStatus='approval'
AND bx_blogs_posts.Categories IN ('".$innov24_config."')
AND (bx_blogs_posts.allowView=3
OR bx_blogs_posts.allowView=4
OR (bx_blogs_posts.allowView=5 AND bx_blogs_posts.OwnerID IN ('".$bigfriendlist."'))
OR bx_blogs_posts.allowView IN ('".$privacy_OthersToMe."')
OR bx_blogs_posts.allowView IN ('".$privacy_MeToOthers."'))
GROUP BY sys_pre_values.LKey
ORDER BY bx_blogs_posts.PostDate DESC LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.