За последние 24 часа нас посетили 15159 программистов и 1675 роботов. Сейчас ищут 845 программистов ...

В чем косяк ?

Тема в разделе "PHP и базы данных", создана пользователем MouseZver, 22 сен 2013.

  1. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.809
    Симпатии:
    1.332
    Адрес:
    Лень
    Немогу правильно составить запрос как хотелось бы.
    Код (Text):
    1. SELECT forum.*, (SELECT MAX(forum_topic.time)
    2. FROM forum_topic JOIN forum ON forum_topic.id_forum = forum.id WHERE forum_topic.time > '".(time() - 3600*24*13)."' AND forum_topic.id_forum = forum.id) as toptime
    3. FROM forum
    4. ORDER BY forum.id DESC
    forum:
    Код (Text):
    1. id - name - time - num_top
    2. 1 - TEST FORUM 01 - 1379680002 - 3
    3. 2 - TEST FORUM 02 - 1379680016 - 3
    4. 3 - TEST FORUM 03 - 1379680031 - 4
    5. 4 - TEST FORUM 04 - 1379694231 - 1
    forum_topic:
    Код (Text):
    1. id - id_forum - name - time - posts
    2. 1 - 1 - TEST TOPIC 01 - 1379680061 - 0
    3. 2 - 1 - TEST TOPIC 02 - 1379680298 - 0
    4. 3 - 1 - TEST TOPIC 03 - 1379680304 - 0
    5. 4 - 2 - TEST TOPIC 01 - 1379680370 - 0
    6. 5 - 2 - TEST TOPIC 02 - 1379680375 - 0
    7. 6 - 2 - TEST TOPIC 03 - 1379680381 - 0
    8. 7 - 3 - TEST TOPIC 01 - 1379680411 - 0
    9. 8 - 3 - TEST TOPIC 02 - 1379680416 - 0
    10. 9 - 3 - TEST TOPIC 03 - 1379680422 - 0
    11. 10 - 3 - TEST TOPIC 04 - 1379680427 - 0
    12. 11 - 4 - База данных - 1379694816 - 0
    должно выводится так:
    Код (Text):
    1. Array
    2. (
    3.     [0] => Array
    4.         (
    5.             [id] => 4
    6.             [name] => TEST FORUM 04
    7.             [time] => 1379694231
    8.             [num_top] => 1
    9.             [toptime] => 1379694816
    10.         )
    11.  
    12.     [1] => Array
    13.         (
    14.             [id] => 3
    15.             [name] => TEST FORUM 03
    16.             [time] => 1379680031
    17.             [num_top] => 4
    18.             [toptime] => 1379680427
    19.         )
    20.  
    21.     [2] => Array
    22.         (
    23.             [id] => 2
    24.             [name] => TEST FORUM 02
    25.             [time] => 1379680381
    26.             [num_top] => 3
    27.             [toptime] => 1379680381
    28.         )
    29.  
    30.     [3] => Array
    31.         (
    32.             [id] => 1
    33.             [name] => TEST FORUM 01
    34.             [time] => 1379680002
    35.             [num_top] => 3
    36.             [toptime] => 1379680304
    37.         )
    38.  
    39. )
    а выводит с последним и одинаковым по всем массивам
    Код (Text):
    1. Array
    2. (
    3.     [0] => Array
    4.         (
    5.             [id] => 4
    6.             [name] => TEST FORUM 04
    7.             [time] => 1379694231
    8.             [num_top] => 1
    9.             [toptime] => 1379694816
    10.         )
    11.  
    12.     [1] => Array
    13.         (
    14.             [id] => 3
    15.             [name] => TEST FORUM 03
    16.             [time] => 1379680031
    17.             [num_top] => 4
    18.             [toptime] => 1379694816
    19.         )
    20.  
    21.     [2] => Array
    22.         (
    23.             [id] => 2
    24.             [name] => TEST FORUM 02
    25.             [time] => 1379680016
    26.             [num_top] => 3
    27.             [toptime] => 1379694816
    28.         )
    29.  
    30.     [3] => Array
    31.         (
    32.             [id] => 1
    33.             [name] => TEST FORUM 01
    34.             [time] => 1379680002
    35.             [num_top] => 3
    36.             [toptime] => 1379694816
    37.         )
    38.  
    39. )
    ковырялся в инете, примеры пробывал.. без результатов :|
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    это что?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.809
    Симпатии:
    1.332
    Адрес:
    Лень
    без это выдаст ошибку ORDER

    Добавлено спустя 3 минуты 22 секунды:
    а ну да и без это работает.
    и все таки вопрос не решен(
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.809
    Симпатии:
    1.332
    Адрес:
    Лень
    мда

    Добавлено спустя 6 минут 49 секунд:
    свежее:
    Код (Text):
    1. SELECT
    2. forum.id AS id,
    3. forum.name AS name,
    4. forum.time AS time,
    5. forum.num_top AS num_top,
    6. topic.name AS toptime
    7. FROM forum
    8. LEFT JOIN forum_topic AS topic ON forum.id = topic.id_forum AND topic.time > '".(time() - 3600*24*7)."'
    немогу запросить максимальное число теперь
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.809
    Симпатии:
    1.332
    Адрес:
    Лень
    вобщем сделал по дну.
    Код (PHP):
    1. $result = SQL::query("SELECT id_forum, time FROM forum_topic WHERE time > '".(time() - 3600*24*3)."'")->fetchall(SQLITE_ASSOC);
    2.         foreach ($result as $arr) {
    3.             $NEW_TOPIC_FLAG[$arr[id_forum]] = $arr[time];
    4.         }