我有2个表:tbl_customers
和tbl_customers_notes
我在表行中显示所有客户(就像一个人那样),我想添加一个列,用于显示相关datetime
表中的最后一个已知tbl_customers_notes
记录。 / p>
显然,这是一对多的关系,匹配的recID将是customerid
。
这是我到目前为止所做的:
<?php
$result = mysql_query("SELECT `customername` FROM `tbl_customers` ");
while($row = mysql_fetch_array( $result )) {
?>
<tr>
<td><?php echo $customername;?></td>
<td><?php echo 'note datetime'; ?></td>
</tr>
<? } ?>
如果我使用notes表进行JOIN,我会得到重复。我可以限制tbl_customers_notes
只选择该customerid的最后一条已知记录吗?
答案 0 :(得分:2)
试试这个:
select c.customerid, c.customername, max(cn.note_date)
from tbl_customers c
left join tbl_customers_notes cn on c.customerid = cn.customerid
group by c.customerid, c.customername
对customerid和customername进行分组的原因是,如果相同的customername可能具有不同的customerid。外部联接包括没有笔记的客户。
答案 1 :(得分:1)
SELECT `customername`, max_datetime FROM `tbl_customers` c left join
(select max(datetime) max_datetime, customerid
from tbl_customers_notes cn group by customerid) cn on
on c.id=cn.customerid;
答案 2 :(得分:0)
我认为HAVING
是有序的。
SELECT c.customername, n.note_date
FROM tbl_customers c
INNER JOIN tbl_customers_notes n ON c.customerid = n.customerid
GROUP BY c.customername
HAVING n.note_date = MAX(n.note_date)