2017-02-23 12 views
-2

私は右のジョインを使用して下のテーブルからMINの価格を取得したいとします。値はゼロではなく、ユーザIDに基づいて空ではありません。どのように私は1つのMYSQLクエリでユーザーIDに基づいてMINの価格でシングルレコードを得ることができます。 ここで私はちょうど右の結合で質問します。Mysqlはゼロではなく、空ではないMINの価格を取得

SELECT * 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' 

テーブル名:検索

search | search_id | user_id | datetime 
1  | 1   | 1  | - 

テーブル名:ご

offer_id | search_id | price 
1  | 1   |  
2  | 1   | 0  
3  | 1   | 506.1  
4  | 1   | 285.3 

答えて

2

クエリは次のようになります。

SELECT * 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' AND search.price > 0 
ORDER BY search.price ASC LIMIT 1 
0

あなたは最小限の価格を選択したいときは、 MYSQLの "MIN"機能を使用することができます。この関数では、クエリにGROUP BYが必要です。

このようなものは、要件に合わせて編集してください。

SELECT *, MIN(price) as `minPrice` 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' AND search.price > 0 
GROUP BY search.search_id 
0

異なる結合条件を使用する代替:

SELECT MIN(o.price) min_price 
FROM search s 
JOIN offers o ON (
    s.search_id = o.search_id 
    AND o.price IS NOT NULL 
    AND o.price > 0 
) 
WHERE s.user_id = '1' 
関連する問題