2017-02-23 108 views
-2

Я хочу получить MIN цену из нижеуказанных таблиц, используя ПРАВИЛЬНОЕ ПРИСОЕДИНЕНИЕ и ГДЕ цена, не равная нулю, а не пустая на основе идентификатора пользователя. Как я могу получить единую запись с ценой MIN на основе идентификатора пользователя в одном запросе MYSQL. Вот мой запрос с правильным подключением.Mysql get 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'