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 - Fatal编程技术网

Php 如何从两个表中获取最新的5家公司数据

Php 如何从两个表中获取最新的5家公司数据,php,mysql,Php,Mysql,我在mysql数据库中有2个表 a) 公司 2) 历史 此视图\u id包含cid值 现在,我总是想根据历史记录表查看id将公司表中最新的5个公司名称显示为升序 为此,我正在进行以下查询。但是company\u name没有显示ASC或DESC订单 以下是查询: $getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as =

我在mysql数据库中有2个表

a) 公司

2) 历史

视图\u id
包含
cid

现在,我总是想根据
历史记录
查看id
公司
表中最新的5个
公司名称显示为升序

为此,我正在进行以下查询。但是
company\u name
没有显示
ASC
DESC
订单

以下是查询:

$getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as = 3 GROUP BY view_id ORDER BY view_date DESC LIMIT 5 ");  

if(mysqli_num_rows($getViewID3) > 0 ) { 

   while( $fetchViewId3 = mysqli_fetch_array($getViewID3) ) {
   $viewid3 = (int) $fetchViewId3['view_id'];
   $hid3 = (int) $fetchViewId3['hid'];
   $is_save3 = (int) $fetchViewId3['is_save'];

   $getCompany = mysqli_query($link, "SELECT company_name FROM company WHERE cid = '$viewid3' ORDER BY company_name DESC");

   if(mysqli_num_rows($getCompany) > 0 ) {

      while ($fetchCompany2  = mysqli_fetch_array($getCompany)) {
         $cName = htmlspecialchars($fetchCompany2['company_name']);
         $url_link = "{$url}company.php?cid=$viewid";

         if($is_save3 == 1) {
            $checked = 'checked = "checked"';
         } else {
            $checked = '';
         }

         echo "<li><a onClick='window.document.location=\"$url_link\"'>&nbsp;&nbsp;$cName </a> <input type='checkbox' class='data_save' $checked data-hid='$hid' data-saveid='$viewid3' name='save_history'></li>";
      }   
   }
}
$getViewID3=mysqli\u query($link,“选择view\u id,hid,is\u save FROM history其中user\u id='$user\u id'和mark\u as=3按视图分组\u id按视图排序\u date DESC LIMIT 5”);
如果(mysqli_num_行($getViewID3)>0{
而($fetchViewId3=mysqli\u fetch\u数组($getViewID3)){
$viewid3=(int)$fetchViewId3['view_id'];
$hid3=(int)$fetchViewId3['hid'];
$is_save3=(int)$fetchViewId3['is_save'];
$getCompany=mysqli_query($link,“从公司中选择公司名称,其中cid='$viewid3'按公司名称描述排序”);
如果(mysqli_num_行($getCompany)>0){
而($fetchCompany2=mysqli\u fetch\u数组($getCompany)){
$cName=htmlspecialchars($fetchCompany2['company_name']);
$url_link=“{$url}company.php?cid=$viewid”;
如果($is_save3==1){
$checked='checked=“checked”';
}否则{
$checked='';
}
回声“
  • $cName
  • ”; } } }
    例如:结果显示:A、E、D、R、L字母顺序。
    应该显示:A、D、E、L、R字母顺序,来自
    公司名称
    栏。

    如果我没有误解:

    SELECT 
    C.company_name
    FROM company C 
    INNER JOIN 
    (
        SELECT 
        view_id,
        MAX(view_date) max_view_date
        FROM history 
        WHERE is_save IN (0,1) AND mark_as = 3
        GROUP BY view_id
        ORDER BY max_view_date DESC 
        LIMIT 5
    ) AS t
    ON C.cid = t.view_id
    ORDER BY C.company_name ASC;
    
    注意:

    $getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as = 3 GROUP BY view_id ORDER BY view_date DESC LIMIT 5 ");  
    
    if(mysqli_num_rows($getViewID3) > 0 ) { 
    
       while( $fetchViewId3 = mysqli_fetch_array($getViewID3) ) {
       $viewid3 = (int) $fetchViewId3['view_id'];
       $hid3 = (int) $fetchViewId3['hid'];
       $is_save3 = (int) $fetchViewId3['is_save'];
    
       $getCompany = mysqli_query($link, "SELECT company_name FROM company WHERE cid = '$viewid3' ORDER BY company_name DESC");
    
       if(mysqli_num_rows($getCompany) > 0 ) {
    
          while ($fetchCompany2  = mysqli_fetch_array($getCompany)) {
             $cName = htmlspecialchars($fetchCompany2['company_name']);
             $url_link = "{$url}company.php?cid=$viewid";
    
             if($is_save3 == 1) {
                $checked = 'checked = "checked"';
             } else {
                $checked = '';
             }
    
             echo "<li><a onClick='window.document.location=\"$url_link\"'>&nbsp;&nbsp;$cName </a> <input type='checkbox' class='data_save' $checked data-hid='$hid' data-saveid='$viewid3' name='save_history'></li>";
          }   
       }
    }
    
    由于您需要最新的5家公司,以下查询将在
    查看id
    旁边放置最后的
    查看日期

    现在,如果您根据
    max\u view\u date
    的降序对这些行进行排序,然后将结果限制为
    5
    ,那么您将从内部查询中获得最多五个
    view\u id
    s

    稍后,此结果集和公司表之间的简单
    内部联接将完成此任务

    很抱歉,按公司名称升序排序最终结果将完成此任务

    编辑:

    $getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as = 3 GROUP BY view_id ORDER BY view_date DESC LIMIT 5 ");  
    
    if(mysqli_num_rows($getViewID3) > 0 ) { 
    
       while( $fetchViewId3 = mysqli_fetch_array($getViewID3) ) {
       $viewid3 = (int) $fetchViewId3['view_id'];
       $hid3 = (int) $fetchViewId3['hid'];
       $is_save3 = (int) $fetchViewId3['is_save'];
    
       $getCompany = mysqli_query($link, "SELECT company_name FROM company WHERE cid = '$viewid3' ORDER BY company_name DESC");
    
       if(mysqli_num_rows($getCompany) > 0 ) {
    
          while ($fetchCompany2  = mysqli_fetch_array($getCompany)) {
             $cName = htmlspecialchars($fetchCompany2['company_name']);
             $url_link = "{$url}company.php?cid=$viewid";
    
             if($is_save3 == 1) {
                $checked = 'checked = "checked"';
             } else {
                $checked = '';
             }
    
             echo "<li><a onClick='window.document.location=\"$url_link\"'>&nbsp;&nbsp;$cName </a> <input type='checkbox' class='data_save' $checked data-hid='$hid' data-saveid='$viewid3' name='save_history'></li>";
          }   
       }
    }
    
    要从
    历史
    表中获取所有列,并从
    公司
    表中获取
    公司名称
    列,请执行以下操作:

    SELECT 
    C.company_name,
    t.*
    FROM company C 
    INNER JOIN
    (
        SELECT 
        history.*
        FROM history
        INNER JOIN 
        (
            SELECT 
            view_id,
            MAX(view_date) max_view_date
            FROM history 
            WHERE is_save IN (0,1) AND mark_as = 3
            GROUP BY view_id
            ORDER BY max_view_date DESC 
            LIMIT 5
        ) AS latestHistory
        ON history.view_id = latestHistory.view_id AND history.view_date = latestHistory.max_view_date
    ) AS t
    ON C.cid = t.view_id
    ORDER BY C.company_name ASC;
    

    如果我没有误解:

    SELECT 
    C.company_name
    FROM company C 
    INNER JOIN 
    (
        SELECT 
        view_id,
        MAX(view_date) max_view_date
        FROM history 
        WHERE is_save IN (0,1) AND mark_as = 3
        GROUP BY view_id
        ORDER BY max_view_date DESC 
        LIMIT 5
    ) AS t
    ON C.cid = t.view_id
    ORDER BY C.company_name ASC;
    
    注意:

    $getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as = 3 GROUP BY view_id ORDER BY view_date DESC LIMIT 5 ");  
    
    if(mysqli_num_rows($getViewID3) > 0 ) { 
    
       while( $fetchViewId3 = mysqli_fetch_array($getViewID3) ) {
       $viewid3 = (int) $fetchViewId3['view_id'];
       $hid3 = (int) $fetchViewId3['hid'];
       $is_save3 = (int) $fetchViewId3['is_save'];
    
       $getCompany = mysqli_query($link, "SELECT company_name FROM company WHERE cid = '$viewid3' ORDER BY company_name DESC");
    
       if(mysqli_num_rows($getCompany) > 0 ) {
    
          while ($fetchCompany2  = mysqli_fetch_array($getCompany)) {
             $cName = htmlspecialchars($fetchCompany2['company_name']);
             $url_link = "{$url}company.php?cid=$viewid";
    
             if($is_save3 == 1) {
                $checked = 'checked = "checked"';
             } else {
                $checked = '';
             }
    
             echo "<li><a onClick='window.document.location=\"$url_link\"'>&nbsp;&nbsp;$cName </a> <input type='checkbox' class='data_save' $checked data-hid='$hid' data-saveid='$viewid3' name='save_history'></li>";
          }   
       }
    }
    
    由于您需要最新的5家公司,以下查询将在
    查看id
    旁边放置最后的
    查看日期

    现在,如果您根据
    max\u view\u date
    的降序对这些行进行排序,然后将结果限制为
    5
    ,那么您将从内部查询中获得最多五个
    view\u id
    s

    稍后,此结果集和公司表之间的简单
    内部联接将完成此任务

    很抱歉,按公司名称升序排序最终结果将完成此任务

    编辑:

    $getViewID3 = mysqli_query($link, "SELECT view_id, hid, is_save FROM history WHERE user_id = '$user_id' AND mark_as = 3 GROUP BY view_id ORDER BY view_date DESC LIMIT 5 ");  
    
    if(mysqli_num_rows($getViewID3) > 0 ) { 
    
       while( $fetchViewId3 = mysqli_fetch_array($getViewID3) ) {
       $viewid3 = (int) $fetchViewId3['view_id'];
       $hid3 = (int) $fetchViewId3['hid'];
       $is_save3 = (int) $fetchViewId3['is_save'];
    
       $getCompany = mysqli_query($link, "SELECT company_name FROM company WHERE cid = '$viewid3' ORDER BY company_name DESC");
    
       if(mysqli_num_rows($getCompany) > 0 ) {
    
          while ($fetchCompany2  = mysqli_fetch_array($getCompany)) {
             $cName = htmlspecialchars($fetchCompany2['company_name']);
             $url_link = "{$url}company.php?cid=$viewid";
    
             if($is_save3 == 1) {
                $checked = 'checked = "checked"';
             } else {
                $checked = '';
             }
    
             echo "<li><a onClick='window.document.location=\"$url_link\"'>&nbsp;&nbsp;$cName </a> <input type='checkbox' class='data_save' $checked data-hid='$hid' data-saveid='$viewid3' name='save_history'></li>";
          }   
       }
    }
    
    要从
    历史
    表中获取所有列,并从
    公司
    表中获取
    公司名称
    列,请执行以下操作:

    SELECT 
    C.company_name,
    t.*
    FROM company C 
    INNER JOIN
    (
        SELECT 
        history.*
        FROM history
        INNER JOIN 
        (
            SELECT 
            view_id,
            MAX(view_date) max_view_date
            FROM history 
            WHERE is_save IN (0,1) AND mark_as = 3
            GROUP BY view_id
            ORDER BY max_view_date DESC 
            LIMIT 5
        ) AS latestHistory
        ON history.view_id = latestHistory.view_id AND history.view_date = latestHistory.max_view_date
    ) AS t
    ON C.cid = t.view_id
    ORDER BY C.company_name ASC;
    


    你能在你的样本数据中加入一些有区别的公司名称并包括你的预期输出吗?@1000111我正在更新…\n我已经更新了它。@草莓,你能告诉我加入查询应该是什么样子吗,因为我已经做了但没有为我工作!完成了50%。预期输出值很多词。你能加入一些有区别的公司名称吗“@1000111我正在更新…\n我已经更新了它。@草莓,你能告诉我连接查询应该是什么样子吗,因为我已经完成了,但没有为我工作过!完成了50%。预期的输出值很多词。这就是为什么我要预期的输出。顺便问一下,你想要什么列?”r预期输出列表?输出将是company\u name值,但条件是:which
    is\u save
    =1或0,mark\u as=3。很抱歉,我误解了。我在where子句中添加了这两个条件。请现在检查。当然。我正在检查itError:Undefined index:is\u save Int这就是我要求预期输出的原因。顺便说一下,whic您希望在预期输出列表中包含h列?输出将是公司名称值,但条件是:which
    is\u save
    =1或0,mark\u as=3。抱歉,我误解了。我已在where子句中添加了这两个条件。请立即检查。确定。我正在检查错误:未定义索引:is\u save in