SELECT listTitle, listLength, listCmt, listDt, mBCFName, mBCLName, moAmt, moDtOff
FROM User U, Listing L, Merchant M, MerchantOffer MO
WHERE U.uID = L.uID
and L.listID = MO.listID
and M.mID = MO.mId
ORDER BY listDt DESC;


这个foreach()循环

    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    foreach($result as $row)
    {
    echo "<div class='listing'>";
        print '<br>Title: ' . $row['listTitle'] . '<br>Comment: ' . $row['listCmt'] .
        '<br>Date: ' . $row['listDt'] . '<br>Offer By: ' . $row['mBCFName']. ' ' .$row['mBCLName']. '<br> for: ' . $row['moAmt'];
    echo "</div>";
    }


产生:

php - 使用循环仅显示一次每个DISTINCT字段值-LMLPHP

基本上我想要的是:

Title: Apple iPhone 4S (listTitle)
Days: <some day amount <listLength>
Comment: some comment <listCmt>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

    Offer By: some user <mBCFName mBCLName>
    Offer:  19.99 <moAmt>
    Date: 10/03/2011 < moDtOff>

最佳答案

在我看来,您想将listTitle作为组标题打印在相关注释上方。

一种方法是跟踪上一行的listTitle,然后仅在与当前行有所不同时才打印它。当然,您必须确保结果集按listTitle排序。

另一种方法是让一个查询获取该组标题的所有数据,然后让另一个查询获取该组的内容。

在查询中也可能这样做,但是这很棘手,因为您希望具有该listTitle的第一条记录具有listTitle的值,而其他记录具有null-直到下一个不一样。

关于php - 使用循环仅显示一次每个DISTINCT字段值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7668115/

10-09 02:35