За последние 24 часа нас посетили 16426 программистов и 1549 роботов. Сейчас ищет 901 программист ...

Запрос в БД на фильтровку дублей

Тема в разделе "PHP и базы данных", создана пользователем Dazz1e, 30 мар 2015.

  1. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Здравствуйте!!
    Как написать запрос, что бы в выводе дубликатов не было, а актуальная запись была бы самая последняя по столбцу с временем внесения записи в БД.
    К примеру:

    ID name time
    1 Миша 12:02
    2 Ваня 12:41
    3 Миша 12:59
    4 Саша 13:32
    5 Ваня 14:43
    6 Миша 18:14

    В результате запроса выходит:

    ID name time
    4 Саша 13:32
    5 Ваня 14:43
    6 Миша 18:14
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Код (Text):
    1. SELECT distinct name, id, time FROM table GROUP BY name ORDER BY MAX(time) DESC
     
  3. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Берет первую встречную запись, ему пофиг на DESC

    То есть в результате будет:
    ID name time
    1 Миша 12:02
    2 Ваня 12:41
    4 Саша 13:32
     
  4. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    какой тип поля у time?
    сделайте TIMESTAMP
     
  5. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
  6. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    и как вы собираетесь по TEXT сортировать?
    сделайте TIMESTAMP, сконвертировав значения, или UNIX_TIMESTAMP пишите в числовое поле
     
  7. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    итог тот же

    Добавлено спустя 1 минуту 30 секунд:
    У меня там не чисто время, я поменял на datetime, там с датой
     
  8. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    дайте дамп таблицы
     
  9. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Код (Text):
    1. SELECT distinct `name`, `id`, `time-ai` FROM `answers` GROUP BY `name` ORDER BY `time-ai` DESC
    Ни чего не изменилось(
     
  10. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    так:
    Код (Text):
    1. SELECT distinct name, id, time-ai from answers ORDER BY time-ai DESC
    Получилось?
     
  11. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Неа( Он не фильтрует дубляж, но сортировка стоит по дате
     
  12. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    А если так?
    Код (Text):
    1. SELECT distinct a.name, a.id, a.time-ai from (SELECT distinct name, time-ai, id FROM answers order by time-ai desc) a group by a.name order by time-ai desc
     
  13. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Заработала))) а. это конвертация или что?

    Добавлено спустя 2 минуты 44 секунды:
    Нериально благодарен
     
  14. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Правильнее даже так без галиматьи:
    Код (Text):
    1. SELECT name, MAX(time-ai), id from answers group by name order by MAX(time-ai) desc, name
     
  15. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    А так он выдает опять же первые записи по времени
     
  16. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Скопируйте запрос и ещё раз проверьте.
     
  17. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Код (Text):
    1. SELECT `name`, MAX(`time-ai`), `id` from `answers` group by `name` order by MAX(`time-ai`) desc, `name`
    Не работает
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    грависы не там очевидно

    Добавлено спустя 54 секунды:
    или там прямо так называется поле?
     
  19. Dazz1e

    Dazz1e Новичок

    С нами с:
    13 янв 2015
    Сообщения:
    55
    Симпатии:
    0
    Именно так
     
  20. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    возможно там со значениями что-то или кешами ибо у меня оба запроса дают одинаковую выборку.
    Ну да и ладно.
     
  21. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Буквально на днях понадобилось то же самое и нашел решение по ссылке
    [url=https://www.periscope.io/blog...4-ways-to-join-only-the-first-row-in-sql.html
    [/url]
    Там приведено несколько решений

    *Ссылки на форуме парсятся автоматически. Тег URL используется иначе: [url=какой-то URL]Какой-то текст[/url] Получим вот такую ссылку.

    Всего наилучшего :)
     
  22. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Не говоря в общем то о том, что у автора блога по ссылке 2 связанные таблицы, что непосредственно отличается от задачи тса.
     
  23. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Виноват, ошибся !