2017-12-23 8 views
1

複数の行を持つbidsというテーブルがあります。IDに基づいて1つのレコードにSQLを制限する方法

これらはすべて固有のIDを持っていますが、リストIDも持っているため、挿入するたびに新しい行が挿入されますが、そのリストIDが挿入されます。

私は、リスト内のすべての入札単価に合わせて1つのユニークな結果を返そうとしています。SELECT DISTINCTを試してみましたが、どちらも機能していないようです。これは私が唯一listingID列の最後のレコードを印刷したいテーブル[単価]

からすべてのレコードを印刷している瞬間に

$bids = $this->db->query("SELECT bidID,listingID, listing_title, bid_date, username,amount, starting_, sold, vintage, bottles, size, cases, sold_date, bid_type, 
FORMAT(`bin`, 0) AS `bin`, 
(CASE 
WHEN (SELECT COUNT(*) FROM bids WHERE bid_listing = listingID) 
THEN 
(SELECT FORMAT(amount,0) FROM bids WHERE bid_listing = listingID ORDER BY bidID DESC LIMIT 1) 
ELSE 
FORMAT(`starting_`, 0) 
END 
) AS `starting` 
FROM (`bids`) 
JOIN listings ON listingID = bid_listing 
JOIN users ON list_uID = userID 
WHERE bidder_ID = $userID 
ORDER BY bidID DESC"); 
+2

クエリの最後に「LIMIT 1」を使用しますか? –

+2

これは悪い質問ではありませんが、単純に質問タイトルをGoogleに貼り付けておけば、あなたの答えが得られます。研究努力が不足していると投票した – billynoah

+0

私は研究を行い、私は試みました。私は限界1を置くが、それは1recordしか表示しない。たとえば、6つの異なるレコード(一意のlistingIDで)があると、全部ではなく1つのレコードしか表示されない。6 –

答えて

0

このSQLを試してみてください。私はb1。*を使用しました。あなたが戻そうとしているフィールドがわからないからです。

$bids = $this->db->query("select b1.* from bids b1 
     left join bids b2 on (b1.listingID = b2.listingID and b1.bidID < b2.bidID 
     where b2.bidID is null"); 
関連する問題