我有3個表包含用戶的信息(包括Log_Name),日誌(您可以在其中找到Login)和評估(如果用戶回答'評估' 或不)。所有通過user_id字段連接。在一個表中顯示不同的列和非不同列
我想在PHP輸出它以這種方式:
你能幫我解決這個。
編輯: 有人建議我首先循環Log_Name和循環內,我會循環登錄,然後在表格中顯示出來。但我不知道該怎麼做。
我有3個表包含用戶的信息(包括Log_Name),日誌(您可以在其中找到Login)和評估(如果用戶回答'評估' 或不)。所有通過user_id字段連接。在一個表中顯示不同的列和非不同列
我想在PHP輸出它以這種方式:
你能幫我解決這個。
編輯: 有人建議我首先循環Log_Name和循環內,我會循環登錄,然後在表格中顯示出來。但我不知道該怎麼做。
<?php
session_start();
require_once "common.php";
$sql = "SELECT *,GROUP_CONCAT(log.date) as login_date FROM user INNER JOIN log ON log.user_id = user.id INNER JOIN evalution ON evalution.user_id = user.id GROUP BY user.id";
$result = mysql_query($sql) or die(mysql_error());
?>
<table width="40%" border=1>
<tr>
<td>Log_Name</td>
<td>Login</td>
<td>Evalution</td>
</tr>
<?php
while($row = mysql_fetch_assoc($result))
{
?>
<tr>
<td><?php echo $row['name'];?></td>
<td><?php echo str_replace(",","<br/>",$row['login_date']); ?></td>
<td><?php echo $row['evalution']; ?></td>
</tr>
<?php
}
?>
</table>
GROUP_CONCAT(log.date)將返回逗號分隔的最新列表,那麼你可以顯示它根據自己的需要。
我建議擺脫DISTINCT
的想法,只使用ORDER BY
條款。然後,您可以通過檢查相關組更改的時間將其分組在前端。使用MySQL GROUP BY
也可能會有一些技巧,但它不會轉化爲其他RDBMS。
我應該怎麼做? – bayan0926
把評價作爲一個不同的表格之間的推理在哪裏?無論如何:
SELECT u.Log_Name, l.log_time, e.evaluation FROM users_info u LEFT JOIN logs l ON l.user_id = u.user_id LEFT JOIN evaluation e ON e.user_id = u.user_id WHERE u.user_id = 'id'
之後,您將只顯示HTML rowspan所需的表。
重複的問題http://stackoverflow.com/questions/14476653/creating-blank-row-for-repeating-row – Alex
@ w0rldart這是一個不同的問題。正如你所看到的,這一個關注sql與另一個用於顯示。 – bayan0926