首页 > 解决方案 > PHP SQL表,同一行中具有相同ID的值

问题描述


我有这个 SQL 表,我想将数据显示到 html 表中,如下所示:

在此处输入图像描述

在此处输入图像描述

我有这个 php 代码:我的问题是如何使具有相同 post_id 的所有值都在同一行中。图片为插图。提前谢谢你的帮助!

<!DOCTYPE html>
<html>
<head>
 <title>Booking</title>
 <style>
  table {
   border-collapse: collapse;
   width: 100%;
   color: #588c7e;
   font-family: monospace;
   font-size: 25px;
   text-align: left;
     } 
  th {
   background-color: #588c7e;
   color: white;
    }
  tr:nth-child(even) {background-color: #f2f2f2}
 </style>
</head>
<body>
 <table>
 <tr>
  <th>Field14</th> 
  <th>Field15</th> 
  <th>Field16</th>
 </tr>
 <?php
$conn = mysqli_connect("localhost", "admin", "", "test");
  // Check connection
  if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
  } 
  $sql = "SELECT _field_14, _field_15, _field_16 FROM booking";
  $result = $conn->query($sql);

?>
</table>
</body>
</html>

标签: phpsql

解决方案


这是一个小提琴:http ://sqlfiddle.com/#!9/5f1584/1 (我稍微改变了数据,很懒惰)。

我在这里使用了 haudoing 的答案,并进行了一些调整(主要是 group by)。这似乎是最直接的。https://stackoverflow.com/a/13947385/399696

SELECT 
T1.post_id, 
T2.meta_value AS _field_14, 
T3.meta_value AS _field_15, 
T4.meta_value AS _field_16
FROM docs AS T1
LEFT JOIN docs T2 ON T2.post_id=T1.post_id AND T2.metar_key='_field_14'
LEFT JOIN docs T3 ON T3.post_id=T1.post_id AND T3.metar_key='_field_15'
LEFT JOIN docs T4 ON T4.post_id=T1.post_id AND T4.metar_key='_field_16'
GROUP BY post_id

这是结果:

post_id   _field_14   _field_15     _field_16
490       IND         LHSM          2018-07-07
491       ERK         LHKE          2018-07-08

推荐阅读