Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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
如何编写此SQL语句来获取广告和帖子?(PHP/MySQL)_Php_Sql_Mysql - Fatal编程技术网

如何编写此SQL语句来获取广告和帖子?(PHP/MySQL)

如何编写此SQL语句来获取广告和帖子?(PHP/MySQL),php,sql,mysql,Php,Sql,Mysql,我对如何编写这个SQL语句的逻辑有点困惑。当用户单击一个标记(比如HTML)时,它将显示所有以HTML作为标记的帖子。(一个帖子可以有多个标签) 我有三张桌子: 过账-->过账标识、标题、详细信息、, 等 标记-->标记ID,标记名 postingtag-->posting\u id,tagID 我想显示文章的所有标题和添加的日期 global $dbc; $tagID=$_GET['tagID']; //the GET is set by URL //part I n

我对如何编写这个SQL语句的逻辑有点困惑。当用户单击一个标记(比如HTML)时,它将显示所有以HTML作为标记的帖子。(一个帖子可以有多个标签)

我有三张桌子:

  • 过账-->过账标识、标题、详细信息、, 等
  • 标记-->标记ID,标记名
  • postingtag-->posting\u id,tagID
  • 我想显示文章的所有标题和添加的日期

        global $dbc;
        $tagID=$_GET['tagID']; //the GET is set by URL
    
        //part I need help with. I need another WHERE statment to get to the posting table
        $query = "SELECT p.title,p.date_added, t.tagname FROM posting as p, 
        postingtag as pt, tags as t WHERE t.tagID=$tagID";
    
       $data = mysqli_query($dbc, $query);
    
      echo '<table>';
      echo '<tr><td><b>Title</b></td><td><b>Date Posted</b></td></tr>';
      while ($row = mysqli_fetch_array($data)) {         
         echo '<tr><td>'.$row['title'].'</td>';
         echo '<td>'.$row['date_added'].'</td></tr>';
         }
      echo '</table>';
    }
    
    global$dbc;
    $tagID=$_GET['tagID']//GET由URL设置
    //我需要帮助。我需要另一个到投递台的地方
    $query=“选择p.title、p.date\u添加、t.TANGNAME作为p过账,
    postingtag为pt,TAG为t,其中t.tagID=$tagID”;
    $data=mysqli_查询($dbc,$query);
    回声';
    回音“标题已张贴”;
    而($row=mysqli_fetch_数组($data)){
    回显“.$row['title']”;
    回显'.$row['date_added'].';
    }
    回声';
    }
    

    我对mySQL还相当陌生,所以仍在试图弄清楚其中的逻辑:)

    这是使用ANSI语法编写的,更清楚:

    select p.title, p.date_added, t.tagname 
    from posting p
    inner join postingtag pt on p.postingID = pt.postingID
    inner join tags t on pt.tagID = t.tagID
    where t.tagID=$tagID
    

    奥伯曼的解决方案很棒!我认为这可能会帮助您更好地理解如何使用表之间的原始叉积执行相同的查询。如果要保留原始语法,则必须添加一些附加的where条件:

    SELECT p.title, p.date_added, t.tagname
    FROM
    posting as p, 
    postingtag as pt,
    tags as t
    WHERE
        p.postingID = pt.postingID AND pt.tagID = t.tagID AND t.tagID = $tagID
    

    哇,你让它看起来很简单。谢谢我可以问一下您是如何得出这个逻辑的吗?您基本上是说首先将GET的tagID与tags表的tagID进行匹配。然后通过p.postingID=pt.postingID在posting和postingtag表之间建立连接。这是正确的吗?@ggfan很简单:[posting]-->[posting tag]当您加入所有三个表时,WHERE语句如何知道从posting表中获取正确的posting\u id?因为你不只是确定tagID匹配吗?谢谢,我忘了那部分。我把那句话从我的回答中删除了。