Доброго времени суток! Как правильней вывести количество записей для пагинации Есть таблица users с 50 пользователями, таблица email где к каждому пользователю привязано по 2 мыла: и если "SELECT count(*) FROM users" даёт 50? то: "SELECT count(*) FROM users AS t1 LEFT JOIN email AS t2 ON t2.user_id = t1.id" даст 100 но для пагинации нужно 50, как сделать правильней ? GROUP BY ? Заранее благодарю за уделенное время
мне нужен в итоге вывод пользователей, аля: PHP: array( array( 'name' => 'Петя', 'emails' => array( 'petya1@mail.ru, petya2@mail.ru' ) ), array( 'name' => 'Вася', 'emails' => array( 'vasya1@mail.ru, vasya2@mail.ru' ) ) )
PHP: SELECT name, GROUP_CONCAT(emails) as emails FROM users AS t1 LEFT JOIN email AS t2 ON t2.user_id = t1.id GROUP BY name
Спасибо. А если более сложный вариант: 4 таблицы: orders ( заказы, где name - название ) operations ( операции к заказам, множественное ) status ( статус операции ) avto ( автомобили используемые в операции, множественное ) Код (Text): array( array( 'name' => 'Заказ 1', 'operations' => array( array( 'name' => 'Операция 1', 'status' => 'на модерации', 'auto' => array( array( 'name' => 'Man', 'number' => 'a111aa25' ), array( 'name' => 'Volvo', 'number' => 'б222бб35' ) ) ), array( 'name' => 'Операция 2', 'status' => 'исполнено', 'auto' => array( array( 'name' => 'Dav', 'number' => 'в333вв45' ), array( 'name' => 'Man', 'number' => 'д444дд55' ) ) ) ) ) ); опять же с постраничной навигацией, сейчас я делаю первым запросом с группировкой по ID заказа, а второй mysqli_fetch_assoc перебираю строки и выстраиваю нужный массив, но что то мне подсказывает что так не совсем верно, в данном случае 1 заказ * 2 операции * 2 машины = 4 строчки, но бывает и гораздо больше и ресурсоемко получается перебрать строки и создать необходимый массив
Если вы не будете изобретать отдельный запрос для count , то не будет и проблемы. Делайте всё так же, но вместо перечисления полей count(*) - куда уж проще.