ФорумРазработкаБазы данных → Выборка непрочитанных сообщений

Выборка непрочитанных сообщений

  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 августа 2009 г. 10:50

    Делаю нечто, напоминающее форум) Есть «форумы», «топики» и «посты».

    forums:
    id | key | title

    topics:
    id | forum | title | user | date

    posts:
    id | topic | content | user | date


    То есть технически топик не имеет содержания, только заголовок — в качестве содержания используются посты, и текст топика записывается как первый пост в этом топике.

    Нужно выбрать непрочитанные топики, на практике — непрочитанные посты и, в связи с ними, топики.

    Для этого использую таблицу прочитанных постов. При прочтении темы, посты из нее заносятся в эту таблицу:
    id | user | post


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

    Запрос выглядит так:

    SELECT TT . * , TP.`content` AS `last_answer` , count( TP.`id` ) AS `answers` , TF.`key` AS `forum_key`
    FROM `topics` AS TT
    JOIN `posts` AS TP ON TT.`id` = TP.`topic`
    JOIN `forums` AS TF ON TF.`id` = TT.`forum`
    WHERE TP.`id` NOT
    IN (
    SELECT TR.`post`
    FROM `posts_read` AS TR
    WHERE TR.`user` = "1"
    )
    GROUP BY TT.`id`
    ORDER BY TP.`date` DESC


    Но — в `last_answer` оказывается первый пост из топика, а мне нужен последний. Где я туплю?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 10:53, спустя 3 минуты 25 секунд

    sap, а посмотреть сорцы популярных бесплатных форумов не пробовал ?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 августа 2009 г. 10:54, спустя 35 секунд

    NRG, нет.
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 10:54, спустя 32 секунды

    GROUP BY TT.`id`

    думаю тут
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 августа 2009 г. 10:57, спустя 2 минуты 19 секунд

    Да, похоже тут)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 11:03, спустя 5 минут 59 секунд

    ахуенно!
    Сапожник без сапог
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 августа 2009 г. 11:10, спустя 7 минут 27 секунд

    Что?)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 11:12, спустя 1 минуту 32 секунды


    Что?)
    +1!!))
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 11:13, спустя 1 минуту 13 секунд

    sap, это дуд бота тестирует
    Спустя 19 сек.
    заюзал свой курл и парсер и сделал бота
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 11:20, спустя 6 минут 58 секунд


    sap, это дуд бота тестирует
    Спустя 19 сек.
    заюзал свой курл и парсер и сделал бота
    10 строк ..
    Сапожник без сапог
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 12 августа 2009 г. 11:49, спустя 29 минут 36 секунд

    phpdude, видно ахуенная штука, этот твой дудкурл
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 12 августа 2009 г. 11:54, спустя 4 минуты 46 секунд


    phpdude, видно ахуенная штука, этот твой дудкурл
    попробуй полюбишь, многие уже полюбили
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!