SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.08.2010 17:56:07

jorik
Участник
Зарегистрирован: 20.09.2009
Сообщений: 9

Группировка по максимальному значению даты и кода записи


CREATE TABLE `ma_soun` (
  `ifns_kod` varchar(4) default NULL,
  `ifns_vid` char(2) NOT NULL default '',
  `ifns_kodp` varchar(4) NOT NULL default '',
  `ifns_kodv` varchar(4) NOT NULL default '',
  `ifns_naimk` varchar(255) NOT NULL default '',
  `ifns_naim` text NOT NULL,
  `ifns_psono` int(1) NOT NULL default '0',
  `ifns_puch` int(1) NOT NULL default '0',
  `ifns_potchdok` int(1) NOT NULL default '0',
  `ifns_potch` int(1) default NULL,
  `ifns_spro_u` varchar(5) NOT NULL default '',
  `ifns_spro_f` varchar(5) NOT NULL default '',
  `ifns_inn` varchar(10) NOT NULL default '',
  `ifns_kpp` varchar(10) NOT NULL default '',
  `ifns_adres` text NOT NULL,
  `ifns_tel` varchar(30) NOT NULL default '',
  `ifns_email` varchar(30) NOT NULL default '',
  `ifns_cite` varchar(255) NOT NULL default '',
  `ifns_dokum` text NOT NULL,
  `ifns_nomdok` varchar(20) default NULL,
  `ifns_datadok` int(11) default NULL,
  `ifns_datan` varchar(20) default NULL,
  `ifns_datak` varchar(20) default NULL,
  `ifns_coment` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `ma_soun`
--

INSERT INTO `ma_soun` VALUES ('0000', '00', '', '', 'Госналогслужба России', 'Государственная налоговая служба Российской Федерации', 1, 1, 1, 1, '', '', '7707066312', '', ',103051,Москва г,,,,Неглинная ул,23,,', '200-38-48', '', '', 'Протокол совещания ГНС России', '', 886712400, '06.02.1998', '23.12.1998', 'Изменение кода');
INSERT INTO `ma_soun` VALUES ('0000', '00', '', '', 'МНС России', 'Министерство Российской Федерации по налогам и сборам', 1, 1, 1, 1, '', '', '7707066312', '', ',127381,Москва г,,,,Неглинная ул,23,,', '(095) 913-00-05', 'mns@nalog.ru', '', 'Указ Президента Российской Федерации', '1635', 914360400, '23.12.1998', '14.10.2004', '');
INSERT INTO `ma_soun` VALUES ('0000', '00', '', '', 'ФНС России', 'Федеральная налоговая служба', 1, 1, 1, 1, '', '', '7707329152', '770701001', ',127381,Москва г,,,,Неглинная ул,23,,', '(095) 913-00-05', 'mns@nalog.ru', '', 'Приказ ФНС России', 'САЭ-3-15/1@', 1097697600, '14.10.2004', '', '');

 


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

SELECT   `ifns_kod`, `ifns_vid`,`ifns_kodp`,`ifns_kodv`,`ifns_naimk` , MAX(`ifns_datadok`)  FROM `ma_soun`  
GROUP BY `ifns_kod`

Работает неправильно
Сложность в том что коды ‘ifns_kod’ не уникальны, а должны стать в таблице уникальными по большей дате. То есть останутся те коды у которых ‘ifns_datadok’  самое большое.


Комментарий модератора:
Прежде чем задавать вопросы о неправильной работе запросов с группировкой, просьба ознакомиться со статьей Группировка в MySQL

Неактивен

 

#2 03.08.2010 18:13:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Группировка по максимальному значению даты и кода записи

SELECT *
FROM `ma_soun` t, (SELECT ifns_kod, MAX(`ifns_datadok`) AS ifns_datadok FROM `ma_soun` GROUP BY ifns_kod) s
WHERE t.ifns_kod = s.ifns_kod AND t.ifns_datadok = s.ifns_datadok;

Неактивен

 

#3 04.08.2010 11:40:51

jorik
Участник
Зарегистрирован: 20.09.2009
Сообщений: 9

Re: Группировка по максимальному значению даты и кода записи

Спасибо большое!
Вчера уже вечером дошёл до варианта

SELECT * FROM `ma_soun` WHERE `ifns_datadok` IN  (SELECT max(`ifns_datadok`) FROM `ma_soun` GROUP BY `ifns_kod`)
  GROUP BY `ifns_kod` ORDER BY `ifns_kod`
 

Вроде тоже рабочий.
Спасибо за поддержку!

Неактивен

 

#4 04.08.2010 11:51:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Группировка по максимальному значению даты и кода записи

У Вас не совсем такой же запрос. Он у Вас сломается, если данные будут
какие-то такие (т.к. Вы сравниваете только даты, а коды — нет):

kod  |  data
---------------
1     | 2010-08-03
2     | 2010-08-03
1     | 2010-08-04

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson