【问题标题】:How can I join this 3 tables我怎样才能加入这 3 张桌子
【发布时间】:2018-03-20 12:48:21
【问题描述】:

这是SP_ARCHIVE

这是Account

这是Proponent

查询应该输出的是sp_archive.SP_IDsp_archive.SP_Titlesp_archive.SP_TypeAccount.Account_FirstNameAccount.MiddleNameAccount.LastName

name 应该是不同的列

【问题讨论】:

    标签: mysql sql codeigniter


    【解决方案1】:

    应该这样做:

    select  sp_archive.SP_ID, sp_archive.SP_Title, sp_archive.SP_Type, 
    Account.Account_FirstName, Account.MiddleName, Account.LastName from 
    SP_ARCHIVE join Proponent using (SP_ID) join Account using 
    (Account_ID); 
    

    【讨论】:

      【解决方案2】:

      你可以试试这个查询来解决你的问题:

      $this->db->select('sp_archive.SP_ID, sp_archive.SP_Title, sp_archive.SP_Type, Account.Account_FirstName, Account.MiddleName, Account.LastName');
      $this->db->from('Proponent');
      $this->db->join('sp_archive', 'sp_archive.SP_ID=Proponent.SP_ID ', 'left');
      $this->db->join('Account', 'Account.Account_ID = Proponent.Account_ID', 'left');
      
      $query = $this->db->get();
      $result = $query->result();
      
      echo "<pre>";
      print_r($result);
      exit;
      

      我希望它会有所帮助。

      【讨论】:

        【解决方案3】:

        您可以直接加入 AccountSP_ARCHIVEProponent

        SELECT `sp_archive`.`SP_ID`, 
               `sp_archive`.`SP_Title`, 
               `sp_archive`.`SP_Type`, 
               `Account`.`Account_FirstName`, 
               `Account`.`MiddleName`, 
               `Account`.`LastName` 
        FROM `Proponent` 
        LEFT JOIN `Account` 
               ON `Account`.`Account_ID` = `Proponent`.`Account_ID` 
        LEFT JOIN `SP_ARCHIVE` 
               ON `SP_ARCHIVE`.`SP_ID` = `Proponent`.`SP_ID`
        

        【讨论】:

        • 如果支持者可以有多个值怎么办?我的意思是每个 SP_ARCHIVE 可以有多个 Proponent
        【解决方案4】:

        查找 CI 查询生成器 https://www.codeigniter.com/userguide3/database/query_builder.html

        创建一个模型,然后创建一个函数来放置您的查询:

        $select = 'av.SP_ID, sp_archive.SP_Title, av.SP_Type, a.Account_FirstName, a.MiddleName,a.LastName';
        
        $results = $this->db->select($select)
        //if you want it to be an inner join remove 3rd param from join
        ->join('sp_archive av', 'av.SP_ID=p.SP_ID ', 'left');
        ->join('Account a', 'a.Account_ID = p.Account_ID', 'left')
        //aliase tabel names
        ->get('Proponent p')->result();
        
        return $results;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 2011-04-07
          • 1970-01-01
          • 2021-10-10
          • 1970-01-01
          相关资源
          最近更新 更多