Php 使用sql内部联接从两个表中获取数据,尝试获取非对象的属性

Php 使用sql内部联接从两个表中获取数据,尝试获取非对象的属性,php,mysql,sql,html-table,phpmyadmin,Php,Mysql,Sql,Html Table,Phpmyadmin,我有两个表事件和会话,如下所示 事件表 会话表 以下是预期结果 这是我的解决办法 <table> <tr> <th>Sessions </th> <th>konto</th> <th>Mobile</th>

我有两个表事件和会话,如下所示

事件表

会话表

以下是预期结果

这是我的解决办法

  <table>
                  <tr>
                    <th>Sessions </th>
                    <th>konto</th>
                    <th>Mobile</th>
                    <th>Komputer</th>
                    <th>Date</th>
                  </tr>       
                  <?php
                      $conn = mysqli_connect("localhost", "root", "", "ideabank_julia");
                      // Check connection
                      if ($conn->connect_error) {
                      die("Connection failed: " . $conn->connect_error);
                      }
                      $sql = "SELECT sid, datetime, count(*) as num_rows, count(distinct sid) as sessions,  
                      sum( targetbuttonname = 'konto' ) as num_konto,
                      sum(devicetype ='Computer') as num_computer, 
                      sum(devicetype = 'Mobile') as num_mobile from events
                      INNER JOIN sessions ON events.sid = sessions.sid group by sid, datetime;";

                      $result = $conn->query($sql);
                      if ($result->num_rows > 0) {
                      // output data of each row
                      while($row = $result->fetch_assoc()) {
                      echo "<tr>
                      <td>". $row["num_rows"]."</td>
                      <td>". $row["num_konto"]."</td>         
                      <td>". $row["num_mobile"]. "</td>
                      <td>". $row["num_computer"]. "</td>
                      <td>". $row["datetime"]. "</td>

                      </tr>";
                      }
                      echo "</table>";
                      } else { echo "0 results"; }
                      $conn->close();
                      ?>
                </table>
当我在上面的php脚本上运行时,我得到以下错误

 # 1052 - Column: 'sid' in field list is ambiguous
Trying to get property of non-object

我在代码中做错了什么?

我认为您应该在所选列中添加别名,以说明从哪个表中获取列。请尝试下面的代码

$sql = "SELECT events.sid, events.datetime, count(events.*) as num_rows, count(distinct events.sid) as sessions,  
                  sum( events.targetbuttonname = 'konto' ) as num_konto,
                  sum(events.devicetype ='Computer') as num_computer, 
                  sum(events.devicetype = 'Mobile') as num_mobile from events
                  INNER JOIN sessions ON events.sid = sessions.sid group by sid, datetime";

您应该在groupby条件中为冒号添加别名

  $sql = "SELECT even.sid, even.datetime, count(*) as num_rows, 
               count(distinct even.sid) as sessions,  
              sum( even.targetbuttonname = 'konto' ) as num_konto,
              sum(devicetype ='Computer') as num_computer, 
              sum(devicetype = 'Mobile') as num_mobile from events even
              INNER JOIN sessions ON even.sid = sessions.sid group by even.sid, 
              even.datetime";

请参阅:第一个错误表示phpmyadmin不知道从何处获取列sid。使用类似于tableName的东西。columnName@Strawberry我真的需要为此创建最终代码吗???@CarlBinalla woow,我使用的是events.sid和sessions.sid,那么你的意思是什么呢?@user9964622在SELECT sid中,你没有定义什么是表sid,至于表中同时存在的其他列,这里不起作用的是错误1064-您在“*as num_rows,countdistinct偶数.sid as sessions”附近的语法有问题,我已经解决了这样的问题“$sql=SELECT sessions.sid,events.datetime,count*as num_rows,countdistinct sessions.sid作为会话,sum targetbuttonname='konto'作为num_konto,sumdevicetype='Computer'作为num_Computer,sumdevicetype='Mobile'作为num_Mobile from events事件的内部加入会话。sid=sessions.sid按会话分组。sid,事件。日期时间`你对上面的答案进行了检查吗?是的,现在正在工作,这就是为什么我决定使用我在上面发布的这个方法。