Объединение таблиц и вывод по дате

Dzen

Новичок
Добрый день,

Подскажите пожалуйста.
Есть таблица-1, поля: id_author, name

Есть таблица-2 поля : id_author, DATE, view
Соответственно в таблице 2 запись вида:
1 - 2012-11-15 - 54
2 - 2012-11-15 - 100
1 - 2012-11-14 - 20
1 - 2012-11-13 - 10

Хотелось бы в итоге скриптом вывести данные по дням. В виде:

PHP:
имя автора                                      дата
                             2012-11-13 | 2012-11-14 |2012-11-15
name с id-1                    10             20         54
name с id-2                     -               -        100
запросом получаю таблицу
SELECT * FROM таблица-1 LEFT JOIN таблица-2 using(id_author)

получаем результат:
id-1 автор1 2012-11-13 10
id-1 автор1 2012-11-14 20
id-1 автор1 2012-11-15 54
id-2 автор2 2012-11-15 100

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

Dzen

Новичок
ну если там 1000 авторов вдруг и даты на месяц т.е. 30 дней, базу не задёргаем разве.

ну и вообще интересно, есть ли решения чтобы разом дёрнуть что надо и сгруппировать как-то и показать по каждой дате.

смысл, в интерфейсе выбираем daterange и выдёргиваем инфу из базы и показываем
 

Фанат

oncle terrible
Команда форума
1000 строк в браузер выводить - ты браузер "задёргаешь" скорее.
а сто запросов базу не задёргают.

ну если так прям охота одним запросом, то можешь поиграться с group_concat()
---
но если даты идут не по порядку, то все равно в пыхапе парсить, твой нынешний запрос, не меняя его.
 
  • Like
Реакции: Dzen

WMix

герр M:)ller
Партнер клуба
Dzen
а можно и в 2 запроса, где второй запрос типа
PHP:
 where field IN(...)
 
  • Like
Реакции: Dzen

Фанат

oncle terrible
Команда форума
ну выбираем афторов, а потом их даты.
вообще, у меня или дежавю, или я на этот вопрос уже отвечал, пару лет на зад...
 

Dzen

Новичок
Фанат
а как лучше сделать вывод даты сверху?) по какой логике не пойму)

формирую такой массив:
PHP:
[айди_автора1] => Array
        (
            [0] => Array
                (
                    [id_author] => айди_автора1
                    [name] => имя автора1
                    [DATE] => 2012-11-14
                    [view] => 20
                )

            [1] => Array
                (
                    [id_author] => айди_автор1
                    [name] => имя автора1
                    [DATE] => 2012-11-15
                    [view] => 54
          
                )

        )


        )


[айди_автора2] => Array
        (
            [0] => Array
                (
                    [id_author] => айди_автора2
                    [name] => имя автора2
                    [DATE] => 2012-11-14
                    [view] => 10
                )

            [1] => Array
                (
                    [id_author] => айди_автора2
                    [name] => имя автора2
                    [DATE] => 2012-11-15
                    [view] => 100
          
                )

        )


        )
но как в итоге вывести инфу в таком виде?

PHP:
 имя автора                                      дата
                                       2012-11-14 |    2012-11-15
name с айди_автора1                           20         54
name с айди_автора2                           10         100
 

Фанат

oncle terrible
Команда форума
ну как-как
в цикле по внешнему рисуешь строки, в цикле по внутреннему - колонки.
 

Фанат

oncle terrible
Команда форума
с какой стати даты будут по два раза выводиться?
ты это из головы выдумал или уже код написал?

чувак, ты пойми две вещи.
1. это твоя работа, а не чья-то ещё. Не надо надеяться на дядю - надо самому хоть что-то делать.
2. Сидеть морщить ум, ничего не делая, можно хоть сто лет - и ничего не родить. А когда начинаешь что-то делать - тогда и само пойдёт, начнешь разбираться. Но если уж не разобрался - то хотя бы будет что показать людям. чтобы они тебе не с нуля с ложечки кормили, как деточку-дебила, а показали, где ошибка, чтобы ты дальше мог сам уже
 

Dzen

Новичок
Фанат писал конечно, по такому принципу, 3-ий цикл что ли делать, или вообще иначе организовывать, потому что с датами не ясно.

PHP:
foreach ($author_stats as $stat)
{

   echo  $stat[0][name]." | ";


    foreach ($stat as $key)
   {
    echo $key[view]." | ";
   }
echo "<br>";

}
получаем:
PHP:
name с айди_автора1                           20         54
name с айди_автора2                           10         100
 

Фанат

oncle terrible
Команда форума
сформулируй задачу конкретно.
а то я начал было это делать за тебя, но потом спохватился.

подсказываю: что должно быть вверху? что конкретно должно быть вверху
 

WMix

герр M:)ller
Партнер клуба
конечно же правильным былоб в масиве (моделе) по автору держать все возможные даты показанные в таблице, даже если в эту дату запись ПУСТО.
в этом случае рисовать таблицу будет намного легче...

приведу пример... запись для первого автора 12.12.2012 => 12, а для второго 11.12.2012 => 15 и 12.12.2012 => 6... и ты стоишь в тупике, нарисовав первую строчку будет проблема изобразить вторую.

те для конкретного примера масив должен быть таким

PHP:
array(
[айди_автора1] =>array(
 11.12.2012 => null,
 12.12.2012 => 12
),
[айди_автора2] =>array(
 11.12.2012 => 15,
 12.12.2012 => 6
)
);
решить эту проблему поможет либо правильный запрос либо дополнительная обработка масива (что лучше избегать)
 

WMix

герр M:)ller
Партнер клуба
Фанат
я немножечко знаю скрипт, вчера в личке обсуждали...
 

WMix

герр M:)ller
Партнер клуба
с какой это радости?
яб избегал только по причине создания еще одной переменной, или сортировки по дате в исходящем... но я не против...
неправильно выразился, яб избегал бы -- мне проще написать запрос
 

Фанат

oncle terrible
Команда форума
ты мне тут нубов не пугай.
потом пойдут очередную дичь по инетам разносить, мол "создать переменную - это ужасная нагрузка на сервер!!!!1111адинадин"
 

Dzen

Новичок
с какой это радости?
ну вообще сколько помню, во всех книжках написано, мол золотое правило, "не делайте на пхп то, что можно делать запросом и базой".
не знаю насколько это всегда верно и не утверждаю. Просто говорю что в книгах почему-то везде светит эта инфа. Мол сгруппировать данные можно запросом? группируй, не получай массив и делай обработку на пхп, а делай всё запросами.
Я лично думаю от задач зависит. Глубоко аппаратную часть не знаю, чтобы утверждать, что там будет грузить больше и на какие лимиты будем натыкаться.
 

WMix

герр M:)ller
Партнер клуба
Dzen
лучше не вдавайся в философию в этом топике, а пробуй решать задачу... если хочешь подискутировать на тему золотого правила открой новый топик
 
Сверху