Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (8) [1] 2 3 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Данные за каждый месяц, как лучше реализовать?
Okulo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 4 месяца, 6 дней
Карма:




всем привет.
есть вот такой запрос
$sqlTotal = "SELECT COUNT(*) AS Number FROM `guest_card` WHERE MONTH(date_reg) = 06 AND YEAR(NOW())";

который считает количество гостей за месяц. В данном примере месяц июнь.

Хотел вывести данные за все месяца в цикле и полученные цифры записать в массив.
массив типа array[12,54,24] и т.д. за все 12 месяцев.

подскажите пожалуйста - как это сделать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Цитата
Хотел вывести данные за все месяца в цикле и полученные цифры записать в массив.

Ни в коем разе не циклы, забудьте это слово по отношению MySQL.
Откройте для себя группировку GROUP BY


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




SELECT t.`month` `month`, COUNT(t.`month`) `number`
FROM (SELECT MONTH(`date_reg`) `month`
FROM `guest_card`
WHERE YEAR(`date_reg`) = YEAR(NOW())) t
GROUP BY t.`month`

попробуйте (я уже попробовал за вас) вот так


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 29 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 29 дней


Цитата
Ни в коем разе не циклы, забудьте это слово по отношению MySQL.

не надо так категорично
бывают ситуации, когда без них не обойтись


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Okulo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 4 месяца, 6 дней
Карма:




Valick спасибо большое!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Цитата
бывают ситуации, когда без них не обойтись

значит логическая ошибка была допущена на стадии проектирования БД


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 29 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 29 дней


Цитата (Valick @ 25.12.2014 - 11:18)
Цитата
бывают ситуации, когда без них не обойтись

значит логическая ошибка была допущена на стадии проектирования БД

нет smile.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Invis1ble, пример smile.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 29 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 29 дней


Valick
не хватает оперативки на обработку большой выборки, приходится в цикле извращаться с лимитом и оффсетом


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Invis1ble, это проблемы железа и это ни разу не аргумент
это всё равно что ладу калину ругать за то что она не может увезти 50 тонн за раз

а вообще что-то не так с твоим примером, получается весь объём информации обработать можно, а отдать в РНР нельзя? это нонсенс.
А если доставать из БД частями, то прийдётся обрабатывать на стороне РНР - это глупость


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 29 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 29 дней


Valick
как это не аргумент. Ты сказал забыть о циклах, а я привел пример, когда без них не обойтись. Проблема железа стала проблемой программиста.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Invis1ble, это выдуманный пример, ничего общего не имеет с реальной жизнью
еще раз повторяю достать из БД частями, потому что не хватает оперативки у БД, и обработать в РНР (где понадобиться еще больше оперативки, я уже молчу о ресурсах процессора) это ну никак не решение проблемы


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Okulo  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 4 месяца, 6 дней
Карма:




Valick

вот только в запросе, если записи нет то получается не 12 а например 10 месяцев.
а нельзя сделать что бы даже если нет записи, то показывало 0 ?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5557
Пользователь №: 35718
На форуме: 4 года, 2 месяца, 3 дня
Карма: 170




Okulo, это можно (и нужно) сделать при выводе средствами РНР
например создать зарание массив ключами которого будут являться месяцы, а значениями просто 0, затем сделать вывод из БД в массив, существующие значения заменяться на значения из БД, а несуществующие так и остануться нулём
вот так создаётся массив
$a = array_fill(1, 12, 0);

можно конечно и на уровне СУРБД извратиться, но оно того не стоит


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Okulo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 4 месяца, 6 дней
Карма:




Valick
я вот так использовал ваш код

$sqlTotal = "SELECT t.`month` `month`, COUNT(t.`month`) `number`
FROM (SELECT MONTH(`date_reg`) `month`
FROM `guest_card`
WHERE YEAR(`date_reg`) = YEAR(NOW())) t
GROUP BY t.`month`"
;
$total = mysql_query($sqlTotal);


while($resultTotal = mysql_fetch_array($total))
{
$totalValue[] = $resultTotal['number'];
}


и вот массив $totalValue у меня получается из 11 строк, так как в одном месяце нет записей
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (8) [1] 2 3 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса