@ekaramazov

Как посчитать все строки в запросе с SELECT > JOIN > SELECT и LIMIT?

Никак не получается получить общее количество строк из базы.
SELECT SQL_CALC_FOUND_ROWS a.id, b.id, b.meta_name, b.meta_value
FROM a
LEFT OUTER JOIN (SELECT * FROM b ORDER BY b.id DESC) b ON a.id = b.meta_value
WHERE b.meta_name = '***'
GROUP BY a.id
ORDER BY a.id DESC
LIMIT 0, 20


$res = mysql_query("SELECT FOUND_ROWS()");		
$count = mysql_result($res, 0);
var_dump($count);  // string(1) "0"

Перерыл гугл но решения не нашел или не понял
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
FanatPHP
@FanatPHP
Чебуратор тега РНР
Запрос - какая-то адская фантасмагория. Нахрена здесь джойн, если из а берется только ид, который равен b.meta_value? Я уже не говорю про джойн с селектом и груп бай.
Такое ощущение, что запрос писал сумасшедший под веществами в состоянии белой горячки.

все что здесь нужно - это

SELECT SQL_CALC_FOUND_ROWS b.id, b.meta_name, b.meta_value
FROM b WHERE b.meta_name = '***'
ORDER BY b.meta_value DESC
LIMIT 0, 20;
SELECT FOUND_ROWS()


После объяснений в комментах стало понятно, что нам нужен подзапрос

SELECT SQL_CALC_FOUND_ROWS a.id, 
(SELECT b.meta_value from b where b.meta_name=a.id order by b.id limit 1) as lastprice
FROM a LIMIT 0, 20
Ответ написан
Ваш ответ на вопрос

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

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