[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!

Check this out!

Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 27 | 5 | 8
Назад Вниз Каталог Обновить

Удаление дубликатов в таблице SQL delete или select хз что мне надо (Microsoft Windows 7: Firefox based) 14/01/17 Суб 08:00:02  1936193  
i.jpg (6Кб, 260x185)
Ребзя у меня есть таблица, примерно такая
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 вернул то, что мне нужно????

SQL delete или select хз что мне надо (Microsoft Windows 7: Firefox based) 14/01/17 Суб 09:59:42  1936246
up chtole
Аноним (Microsoft Windows 10: Chromium based) 14/01/17 Суб 12:19:14  1936318
SELECT DISTINCT column_name,column_name
FROM table_name;
SQL delete или select хз что мне надо (Microsoft Windows 7: Firefox based) 14/01/17 Суб 15:34:16  1936433
Вот я лошара, спасибо конечно.
А проверять дату с временем не нужно? Или как сортировать выборку, что бы это было не нужно?
ID не уникальные в контексте таблицы, время нужно последнее.
Аноним (Microsoft Windows 8: Firefox based) 14/01/17 Суб 16:54:01  1936477
>>1936433
В эксель выгрузи таблицу и сделай все что тебе там надо, епт.
Аноним (Microsoft Windows 7: Firefox based) 14/01/17 Суб 17:01:51  1936483
>>1936477
Ай маладца, от этого и хочу уйти. с 50к записей эксель уходит в даун на 15 минут - надоело
Аноним (Microsoft Windows 10: Chromium based) 14/01/17 Суб 17:04:49  1936486
>>1936433
>время нужно последнее.
Тогда нужен группирующий по ID запрос, а дальше уже выбирать в группах максимальную дату, а потом джоином достать третий столбец по ID и дате.
Аноним (Microsoft Windows 7: Firefox based) 14/01/17 Суб 17:08:40  1936490
>>1936486
на пальцах понятно, а structured query language как это выглядеть будет подскажи пжлст
Аноним (Microsoft Windows 10: Chromium based) 14/01/17 Суб 17:18:14  1936501
>>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
Аноним (Microsoft Windows 7: Chromium based) 16/01/17 Пнд 09:36:57  1938300
Снимок.PNG (14Кб, 839x294)
Чет нея
Аноним (Microsoft Windows 7: Vivaldi) 16/01/17 Пнд 12:45:05  1938366
.PNG (8Кб, 493x316)
>>1938300
SELECT ID_заказа, Max(время_изменения) AS [Max-время_изменения], Last(статус) AS [Last-статус]
FROM Таблица3
GROUP BY ID_заказа;

Аноним (Microsoft Windows 7: Chromium based) 16/01/17 Пнд 15:06:23  1938513
wtfguys.PNG (7Кб, 304x143)
>>1938366
>SELECT ID_заказа, Max(время_изменения) AS [Max-время_изменения], Last(статус) AS [Last-статус]
>FROM Таблица3
>GROUP BY ID_заказа;

Но запрос выводит последнюю по очереди а не по дате строчку. Да и с заказом 678 какая-то фигня, вывел два раза.
Чо не так то???

Есть тут гуру SQL?? Настоящие DBA??
Помогите!
Аноним (Неизвестно: Неизвестно) 16/01/17 Пнд 20:49:36  1938881
>>1938366
>AS [Max-время_изменения]
Я бы за такой нейминг убивал

>Last(статус)
мдеее, нейминг наименьшая из проблем.

>>1938300
> date
Не надо так называть поля, так называется встроенная функция.

>>1938513
У тебя не хватает уникального поля в таблице с изменениями. Пусть оно будет ChangeID (поле с датой не содержит времени, а если бы и содержало, то всё равно была бы опасность неуникальности).

Тогда как-то так можно получить перечень последних ID изменений:
SELECT Max(ChangeID) AS [MaxID], OrderID
FROM Table1
GROUP BY OrderID

А уже к этой таблице, зная уникальный ChangeID, можно через LEFT JOIN подключить эту же таблицу, но со всеми данными (дата, действия), примерно так:

SELECT *
FROM
(SELECT Max(ChangeID) AS [MaxID], OrderID
FROM Table1
GROUP BY OrderID) AS t1 LEFT JOIN t1 AS t2 ON t1.MaxID = t2.ChangeID
Аноним (Microsoft Windows 7: Vivaldi) 17/01/17 Втр 10:11:45  1939257
>>1938881
Иди в хуй. Этот нейминг оп придумал. Пускай он и ебётся с именами. Пять раз поебётся - узнает венгерскую и прочие нотации
Аноним (Microsoft Windows 7: Chromium based) 17/01/17 Втр 10:25:34  1939261
>>1939257
Ты заеб, можешь написать чтобы работала или про нейминг будешь спорить?
Аноним (Неизвестно: Неизвестно) 17/01/17 Втр 10:31:56  1939262
>>1939257
С неймингом или нет, твой запрос - чушь собачья.
Аноним (Microsoft Windows 7: Vivaldi) 17/01/17 Втр 14:58:26  1939493
.PNG (25Кб, 956x272)
>>1938513
SELECT OrderID, Max(ChangeDt) AS ChangeDt_, Last(Status) AS Status_
FROM Таблица3
GROUP BY OrderID;

Или дай достоверный пример данных, с которыми ты хочешь это проделывать или используй запрос правильно. Или опиши задачу по-человечески.
Я подставил этот твой пример в таблицу и запрос отфильтровал всё, как надо. Не понимаю, как у тебя так получается.
Аноним (Microsoft Windows 7: Vivaldi) 17/01/17 Втр 15:31:41  1939536
>>1939493
Облажался. Вот:
SELECT m.Order, m.MaxDT, Таблица3.Status
FROM
(SELECT Order, Max(ChangeDt) AS MaxDT
FROM Таблица3 AS t1
GROUP BY t1.Order)
as m LEFT JOIN Таблица3 ON (m.MaxDT = Таблица3.ChangeDt) AND (m.Order = Таблица3.Order);
Аноним (Неизвестно: Неизвестно) 17/01/17 Втр 15:44:23  1939547
>>1939536
Молодец, переписал моё >>1938881
решение.
Ждём, когда напишешь про необходимость уникального индекса для изменений.
Аноним (Microsoft Windows 7: Vivaldi) 17/01/17 Втр 15:49:03  1939549
>>1939547
И вообще это доска про софт, а не ЯП.
Аноним (Microsoft Windows 7: Chromium based) 17/01/17 Втр 15:56:16  1939552
>>1939549
софт хуёфт
Мы не про яп а про ясз
Аноним (Microsoft Windows 7: Vivaldi) 17/01/17 Втр 15:58:32  1939554
>>1939552
> ясз
чо?
Аноним (Microsoft Windows 7: Chromium based) 17/01/17 Втр 15:59:06  1939555
>>1939554
язык структурированных запросов, ты бл*ть как в танке.
О каких ЯП ты говоришь?
Аноним (Неизвестно: Неизвестно) 17/01/17 Втр 16:02:02  1939556
>>1939555
> эксперт по языкам уровня /s
SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.
Аноним (Microsoft Windows 7: Chromium based) 17/01/17 Втр 16:03:23  1939557
>>1939556
>ния, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.
>>1939556
>правления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.
За такие вот ответы у меня припасены конфеты..
Аноним (Неизвестно: Неизвестно) 17/01/17 Втр 16:10:11  1939559
>>1939557
>я скозал
ОК
Аноним (Microsoft Windows 10: Chromium based) 18/01/17 Срд 10:06:43  1940059
>>1936193 (OP)
Тред не читал
select OrderID, ChangeDate, Status
from OrderStatus inner join (select OrderID, max(ChangeDate) as LastDate group by OrderID) a on OrderStatus.OrderID=a.OrderID and OrderStatus.ChangeDate=a.LastDate
Аноним (Microsoft Windows 7: Chromium based) 18/01/17 Срд 10:10:51  1940060
>>1940059
as LastDate или ChangeDate
понятно

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 27 | 5 | 8
Назад Вверх Каталог Обновить

Топ тредов
Избранное