Як атрымаць унікальныя дні (з якіх ёсць дадзеныя ў БД) з MySQL?

У мяне ёсць база дадзеных MySQL з, сярод іншага, утрымлівае «created_at» калонку. Слупок змяшчае змяняць час Unix для кожнага запісу. На некалькі дзён, было зроблена шмат запісаў. На іншых, няма. Я хачу, каб скласці спіс дат, на якім быў зроблены ў базу дадзеных, па меншай меры адзін уваход. Я паспрабаваў наступнае ў PhpMyAdmin (на Mysql 5.0), але ён дае мне памылку.

SELECT UNIQUE(DATE_FORMAT(`created_at`, '%d/%m/%Y')) FROM `entries`

Каб абыйсці гэтую памылку, я выдаліў частка UNIQUE, і паспрабаваў:

SELECT DATE_FORMAT(`created_at`, '%d/%m/%Y') FROM `entries` WHERE entry_id = 3

Гэта дало мне назад NULL значэнне, якое віно, так як значэнне created_at для entry_id 3, 1298050881. Чаму не працуе гэтыя два запыту?

Па-трэцяе, у рэшце рэшт, я хацеў бы скласці спіс з ліку запісаў, зробленых у дзень, што нешта накшталт:

2011-10-16 1,432
2011-10-17   502
2011-10 18 3,533

Для гэтага мне патрэбныя першыя запыты на працу. Таму я прашу вашай дапамогі. Любая дапамога будзе прынятая з удзячнасьцю :)

0

2 адказы

Паспрабуйце групу па:

SELECT
  date_format(created_at, '%d/%m/%Y') AS theDate, 
  count(*) as theCount
FROM
  entries
GROUP BY
  theDate
HAVING theCount > 1;

І калі вы хочаце замовіць набор вынікаў проста дадайце наступныя радкі ў канцы:

ORDER BY theCount desc;
1
дададзена

Выкарыстанне GROUP BY і COUNT:

SELECT
    DATE_FORMAT(FROM_UNIXTIME(created_at), '%d/%m/%Y') AS date,
    COUNT(*) AS cnt
FROM entries
GROUP BY date
1
дададзена
Гэта цудоўна, дзякуй. Адно пытанне, Тхо. Чаму PHPMyAdmin выкарыстаць двукоссе ( `) вакол імёнаў табліц, калі ён працуе зусім без?
дададзена аўтар Pr0no, крыніца