Php 从最近的5篇文章中选择所有标记分配
我有三张桌子: post id-包含所有条目 标记id-包含所有标记 assign post_id,tag_id-为帖子分配标签,一篇帖子可能有多行 这就是我到目前为止所做的: $sql_post=mysql_query按时间描述限制5从发布顺序中选择标题、内容、时间、web $sql\u tag=mysql\u querySELECT tag.name、tag.id、post.id从assign上的assign LEFT JOIN tag.tag\u id=tag.id在assign上的LEFT JOIN post.post\u id=post.id WHERE post.time>SELECT MINtime FROM SELECT time FROM post ORDER BY time DESC LIMIT 6 two 我正在考虑将所有内容放在一个大数组中,因此类似于下面这个草率的摘要:Php 从最近的5篇文章中选择所有标记分配,php,mysql,tags,blogs,posts,Php,Mysql,Tags,Blogs,Posts,我有三张桌子: post id-包含所有条目 标记id-包含所有标记 assign post_id,tag_id-为帖子分配标签,一篇帖子可能有多行 这就是我到目前为止所做的: $sql_post=mysql_query按时间描述限制5从发布顺序中选择标题、内容、时间、web $sql\u tag=mysql\u querySELECT tag.name、tag.id、post.id从assign上的assign LEFT JOIN tag.tag\u id=tag.id在assign上的LEF
array(
post_id => array(
"title" => "post's title...",
"content" => "post's content...",
"tag" => array(
tag_id => "tag 1's name",
tag_id => "tag 2's name
…然后使用foreach在我的博客上显示它们
我需要帮助的地方是sql for$sql\u标记。我如何使它选择最近5篇文章的所有作业?它只为一篇文章选择一个标签。为什么不在你感兴趣的文章上循环
$sql_post = mysql_query("SELECT id, title,content,time,web FROM post ORDER BY time DESC LIMIT 5");
while ($row = mysql_fetch_assoc($sql_post)) {
$sql_tag = mysql_query("SELECT tag.name,post.id FROM assign LEFT JOIN tag ON assign.tag_id=tag.id WHERE assign.post_id='".$row['id']."'");
}
尝试:
SELECT
c.id,
c.name,
a.id
FROM
(
SELECT id
FROM post
ORDER BY time DESC
LIMIT 5
) a
LEFT JOIN
assign b ON a.id = b.post_id
LEFT JOIN
tag c ON b.tag_id = c.id