0

製品の数量が 0 より大きいかどうか、およびその日付が特定のパラメーターを満たしているかどうかを調べるクエリを実行しています。これらの結果は while ループを通過してページにリストされます。私が直面している問題は、パラメーターのために各テーブルから同じ ID を 2 回選択することです...これにより、項目が 2 回表示されます。もちろん、私はそれを望んでいません。

これが私のクエリです。

SELECT * 
    FROM `trade_show_inventory` 
    LEFT JOIN `trade_show_reserved` 
    ON `trade_show_inventory`.`ID` = `trade_show_reserved`.`ProductID` 
    WHERE `trade_show_inventory`.`Quantity` > 0  
    OR `trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-31' 
    ORDER BY `trade_show_inventory`.`ProductName`

ユーザーが同じ商品を 1 と 1 の数量で 2 回チェックアウトした場合のクエリの結果は、下の画像のとおりです。ID 6 を見ると、結果が表示されます。私が結果にしたいのは、DateReserved からすべての日付を照会し、同時に 0 より大きい数量をチェックできるようにしたいということです。同時に、同じ製品を 2 回表示しないでください。DateReserved は、図で強調表示されている ID とは対照的に、別のテーブルから取得されています。どうすればこの結果を達成できますか? while ループで何かをする必要がありますか? 任意の考えをいただければ幸いです。

これが私のwhileループです。

        while ($results = mysqli_fetch_assoc($query)) {
        echo $results['ProductName'];
        echo
        "<li>
            <img style='width: 200px; height: 200px' src='images/inventory/" . $results['Image'] . "'/>" . 
            "<div class='infoContainer'>" .
            "<a class='productLink' href='/ts/selectItems.php?status=active&id=" . $results['ID'] . "'>" . $results['ProductName'] . "</a>" . 
            "<br />" . 
            "<i>Currently Available </i>" . 
            "<i class='quantity'>" . $results['Quantity'] . "</i>" . 
            "</div>" .
        "</li>";
    }

クエリの結果

4

1 に答える 1

0
SELECT [just the columns you need] 
    FROM `trade_show_inventory` 
    LEFT JOIN `trade_show_reserved` 
    ON `trade_show_inventory`.`ID` = `trade_show_reserved`.`ProductID` 
    WHERE `trade_show_inventory`.`Quantity` > 0  
    OR `trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-31' 
    ORDER BY `trade_show_inventory`.`ProductName`
    GROUP BY [just the columns you need]

これから RID 列を削除すると、GROUP BY によって重複が排除されます。

于 2013-03-25T15:48:49.117 に答える