Запрос к базе данных

Тема в разделе "PHP", создана пользователем ivashka, 23 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ivashka

    ivashka

    Регистр.:
    16 май 2007
    Сообщения:
    151
    Симпатии:
    15
    Как написать запрос к базе данных?
    Вот что нужно:
    Есть столбик в котором записаны ИД, как вывести N записей с ИД который встречается наиболее часто, по убыванию...
    Заранее благодарен...
     
  2. Accountboy

    Accountboy Создатель

    Регистр.:
    18 июл 2008
    Сообщения:
    29
    Симпатии:
    10
    Тестовая таблица test1:
    `ID` int(10) unsigned NOT NULL auto_increment,
    `SID` int(10) unsigned NOT NULL,
    `Name` varchar(45) default NULL,
    `Surname` varchar(45) default NULL,

    Запрос:
    SELECT * FROM test1 WHERE SID=(SELECT SID FROM test1 GROUP BY SID ORDER BY COUNT(*) DESC LIMIT 1) LIMIT N

    N меняешь на свой, SID - это твой ИД

    Дополнительные запросы (мож пригодятся если не знаешь sql)
    SELECT SID FROM test1 GROUP BY SID ORDER BY COUNT(*) DESC LIMIT 1 - получает тот ИД который наиболеее часто встречается
    SELECT SID,COUNT(*) as cnt FROM test1 GROUP BY SID ORDER BY COUNT(*) DESC - получает частоту по SID по убыванию
    SELECT SID,COUNT(*) as cnt FROM test1 GROUP BY SID ORDER BY COUNT(*) ASC - получает частоту по SID по возрастанию

    ПС. Пробовал на MySql, ПС2 - понятно, что имена полей надо поменять на свои и тд.
     
    ivashka нравится это.
  3. ivashka

    ivashka

    Регистр.:
    16 май 2007
    Сообщения:
    151
    Симпатии:
    15
    А как сделать что бы еще и количество встреч выводилось?
    Тоесть ИД=1 - 10 встреч
    ИД=2 - 3 встречи и т.д.
     
  4. ip027

    ip027 Создатель

    Регистр.:
    19 фев 2007
    Сообщения:
    22
    Симпатии:
    7
    SELECT SID,COUNT(SID) FROM test1 GROUP BY SID
     
Статус темы:
Закрыта.