За последние 24 часа нас посетили 18043 программиста и 1634 робота. Сейчас ищут 1964 программиста ...

Помогите с запросом.

Тема в разделе "MySQL", создана пользователем alexei, 4 мар 2008.

  1. alexei

    alexei Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    Россия, Нижневартовск
    Народ, помогите плиз с запросом, таблица имеет следующую структуру
    id | uid | user | message | date | comment
    1 233 boko zzTestzzZ 23.12.01 Hello world

    Ну столбце message сообщения дублируются, надо вывести список сообщение чтобы не было дублей с сортировкой по дате, знаю что надо использовать DISTINCT, вот только не знаю как связать тут 2 запроса. В общем помогите с проблемкой такой небольшой )
     
  2. Clone

    Clone Guest

    [sql]SELECT id, uid, user, DISTINCT message, date, comment FROM table ORDER BY date[/sql]Так чтоле?
     
  3. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Нет, так низя :)
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Конструкция с использованием DISTINCT возвращает клиенту уникальные строки. Уникальность строки определяется значениями всех выбранных полей:
    [sql]
    SELECT DISTINCT * FROM message
    [/sql]
    Т.к. поле id у нас уникально для каждой записи, то мы получим все строки!

    [sql]
    SELECT DISTINCT uid, message FROM message
    [/sql]
    В этом случае мы получим уникальные uid и message
    Если в базе будет две записи с одинаковыми полями uid и message сервер вернет нам одну строку

    [sql]
    SELECT DISTINCT message FROM message
    [/sql]
    Получение уникальных сообщений.
     
  5. alexei

    alexei Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    Россия, Нижневартовск
    Если делать так:
    [sql]
    SELECT DISTINCT message, user FROM message
    [/sql]
    то все ок, выводятся сообщения то что нужно, но мне надо еще дату прицепить, чтобы потом это вывести в список... если к селекту еще добавляешь колонку date, запрос работает, но уникальности нету... Надо просто еще запрос дописать и все, помогите плиз.
     
  6. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    [sql]SELECT id, uid, user, message, `date`, comment FROM `table` group by user, message ORDER BY `date`[/sql]
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    alexei
    Думаю что группировка варианта, предложенный AlexGousev, подойдет больше чем простой DISTINCT.
    Проблема в том что можно получить даты не всех сообщений, а только уникальных.
    В твоем случае может подойдет применение "групповых функций"

    [sql]
    SELECT message, user, max(`date`) FROM message GROUP BY message, user ORDER BY `date`[/sql]
    хотя сомневаюсь, это ли тебе нужно?
     
  8. alexei

    alexei Активный пользователь

    С нами с:
    25 июл 2006
    Сообщения:
    46
    Симпатии:
    0
    Адрес:
    Россия, Нижневартовск
    это как раз что мне было нужно. большое спасибо за помощь. еще просьба ткните моськой в хорошие маны или книги по mysql, чтобы не сильно замудренные) и с примерами, желательно чтобы па русске было )))) заранее спасибо.
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36