Ребзя у меня есть таблица, примерно такаяID заказа | время изменения | статус__________________________________ххххххх | 14.01.17 08:54 | принятххххххх | 14.01.17 18:55 | исполняетсяyyyyyy | 12.01.17 14:30 | принятyyyyyy | 13.01.17 09:00 | доставляетсяИз этой таблицы мне надо последние статусы заказов без дублей:у это таблицы было бы так:ххххххх | 14.01.17 18:55 | исполняетсяyyyyyy | 13.01.17 09:00 | доставляетсяDBA, или просто администраторы БД помогайти. Какой запрос нужно сконструировать/сделать, что бы SQL вернул то, что мне нужно????
up chtole
SELECT DISTINCT column_name,column_nameFROM table_name;
Вот я лошара, спасибо конечно.А проверять дату с временем не нужно? Или как сортировать выборку, что бы это было не нужно?ID не уникальные в контексте таблицы, время нужно последнее.
>>1936433В эксель выгрузи таблицу и сделай все что тебе там надо, епт.
>>1936477Ай маладца, от этого и хочу уйти. с 50к записей эксель уходит в даун на 15 минут - надоело
>>1936433>время нужно последнее.Тогда нужен группирующий по ID запрос, а дальше уже выбирать в группах максимальную дату, а потом джоином достать третий столбец по ID и дате.
>>1936486на пальцах понятно, а structured query language как это выглядеть будет подскажи пжлст
>>1936490На T-SQL примерно так:SELECT id, MAX(date) AS maxdate, O.status FROM orders GROUP BY id JOIN orders O ON O.id = id AND O.date = maxdate
Чет нея
>>1938300SELECT ID_заказа, Max(время_изменения) AS [Max-время_изменения], Last(статус) AS [Last-статус]FROM Таблица3GROUP BY ID_заказа;
>>1938366>SELECT ID_заказа, Max(время_изменения) AS [Max-время_изменения], Last(статус) AS [Last-статус]>FROM Таблица3>GROUP BY ID_заказа;Но запрос выводит последнюю по очереди а не по дате строчку. Да и с заказом 678 какая-то фигня, вывел два раза.Чо не так то???Есть тут гуру SQL?? Настоящие DBA??Помогите!
>>1938366>AS [Max-время_изменения]Я бы за такой нейминг убивал>Last(статус)мдеее, нейминг наименьшая из проблем.>>1938300> dateНе надо так называть поля, так называется встроенная функция.>>1938513У тебя не хватает уникального поля в таблице с изменениями. Пусть оно будет ChangeID (поле с датой не содержит времени, а если бы и содержало, то всё равно была бы опасность неуникальности).Тогда как-то так можно получить перечень последних ID изменений:SELECT Max(ChangeID) AS [MaxID], OrderIDFROM Table1GROUP BY OrderIDА уже к этой таблице, зная уникальный ChangeID, можно через LEFT JOIN подключить эту же таблицу, но со всеми данными (дата, действия), примерно так:SELECT *FROM(SELECT Max(ChangeID) AS [MaxID], OrderIDFROM Table1GROUP BY OrderID) AS t1 LEFT JOIN t1 AS t2 ON t1.MaxID = t2.ChangeID
>>1938881Иди в хуй. Этот нейминг оп придумал. Пускай он и ебётся с именами. Пять раз поебётся - узнает венгерскую и прочие нотации
>>1939257Ты заеб, можешь написать чтобы работала или про нейминг будешь спорить?
>>1939257С неймингом или нет, твой запрос - чушь собачья.
>>1938513SELECT OrderID, Max(ChangeDt) AS ChangeDt_, Last(Status) AS Status_FROM Таблица3GROUP BY OrderID;Или дай достоверный пример данных, с которыми ты хочешь это проделывать или используй запрос правильно. Или опиши задачу по-человечески.Я подставил этот твой пример в таблицу и запрос отфильтровал всё, как надо. Не понимаю, как у тебя так получается.
>>1939493Облажался. Вот:SELECT m.Order, m.MaxDT, Таблица3.StatusFROM (SELECT Order, Max(ChangeDt) AS MaxDTFROM Таблица3 AS t1GROUP BY t1.Order)as m LEFT JOIN Таблица3 ON (m.MaxDT = Таблица3.ChangeDt) AND (m.Order = Таблица3.Order);
>>1939536Молодец, переписал моё >>1938881решение.Ждём, когда напишешь про необходимость уникального индекса для изменений.
>>1939547И вообще это доска про софт, а не ЯП.
>>1939549софт хуёфтМы не про яп а про ясз
>>1939552> ясзчо?
>>1939554язык структурированных запросов, ты бл*ть как в танке.О каких ЯП ты говоришь?
>>1939555> эксперт по языкам уровня /sSQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.
>>1939556>ния, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.>>1939556>правления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.За такие вот ответы у меня припасены конфеты..
>>1939557>я скозалОК
>>1936193 (OP)Тред не читалselect OrderID, ChangeDate, Statusfrom OrderStatus inner join (select OrderID, max(ChangeDate) as LastDate group by OrderID) a on OrderStatus.OrderID=a.OrderID and OrderStatus.ChangeDate=a.LastDate
>>1940059as LastDate или ChangeDate понятно