Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从最近的5篇文章中选择所有标记分配_Php_Mysql_Tags_Blogs_Posts - Fatal编程技术网

Php 从最近的5篇文章中选择所有标记分配

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

我有三张桌子:

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

我正在考虑将所有内容放在一个大数组中,因此类似于下面这个草率的摘要:

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