Задать вопрос
@mega-epic

Как правильно написать SELECT с MAX()?

Всем привет. У меня есть таблица 5ca693f1f01f4227678715.jpeg
У одного "участка" может быть несколько "квитанций". Я пишу запрос, в котором хочу получить запись с наибольшим номером квитанции для конкретного участка. Использую драйвер mysql для nodeJS
case('getReceiptNumber'):
	debug.ok('Запрос номера квитанции');
	var values = [
		receipt',
		'number',
		'number',
		'receipt',
		'rpu',
		frontReq.data //тут номер участка, например 100
	];

	databaseReal("SELECT * FROM ?? WHERE ?? = (SELECT MAX(??) FROM ??) AND ?? = ?", values, function(req){
	    ajaxResponse = req;
	    res.end(JSON.stringify(ajaxResponse));
	    debug.ok(req);
    });
break;

т.е. в этом запросе, динамически изменяется только номер участка.
Проблема в том, что когда я подаю запрос с номером участка "100", мне возвращается строка с номером квитанции 9, хотя на момент запроса уже существует запись с номером квитанции 10 (см первая табличка).

А когда подаю номер участка 101, результат вообще отсутствует, хотя строки есть.

Может запрос кривой?
p.s databaseReal() - моя обертка для метода mysql.query и работы с подключением, там все ок
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@mega-epic Автор вопроса
Всем спасибо, благодаря вам сделал:
SELECT * FROM 'таблица' 
WHERE 'номер участка' = '100' 
ORDER BY 'номер квитанции' DESC 
LIMIT 1

пойду учить sql
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `Номер участка`, COUNT(*) AS `count`
  FROM `table`
  ORDER BY `count` DESC
  LIMIT 1
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
Создал таблицу
5ca72a08c0a5a488761438.jpeg
Написал запрос
SELECT * FROM `test` WHERE nom_uch = 100 AND nom_kvit = (SELECT max(nom_kvit) FROM `test` WHERE nom_uch=100)

Результат
5ca72c745fc0f736820981.jpeg
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
select b.*
(select max(nom_kvit) as nom_kvit from data_tale where nom_uch=1) as a
inner join data_table b using(nom_uch, nom_kvit)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы