Записи с тегом «SQL»

Выборка данных по датам с помощью GROUP BY, включая даты для которые данные отстутствуют

04.07.2010 23:38 / Артём Волк / 904 просмотра / ...

К примеру, в БД MS SQL Server есть таблица Logs в которую заносятся данные об активности пользователей. По этим данным необходимо сделать выборку, например, подсчитать количество действий пользователей по дням месяца. По выходным и праздникам пользователи приложением не пользуются, поэтому при использовании обычного GROUP BY в результате выборки будут представлены только те даты, для которых нашлись данные, что, например, для построения графиков не подходит.

решение...

Генерация тестовых данных средствами MySQL

06.06.2010 16:48 / Артём Волк / 999 просмотров / ...

Средства генерации тестовых данных встроены во многие утилиты для работы с БД, существует большое количество сторонних и даже он-лайн инструментов. Конечно, набор реальных тестовых данных ничто не заменит, но для случая «нагенерить чего-нибудь да по-больше» можно обойтись и встроенными возможностями MySQL.

читать дальше

Выборка последних записей из большой таблицы

23.05.2010 21:24 / Артём Волк / 1163 просмотра / ...

К примеру, в MySQL БД есть такая таблица:

`log`
----------
`id`			(номер записи в логе)
`inserted`		(дата и время события)
`message`		(описание события)
`user_id`		(вторичный ключ на таблицу пользователей `users`)

По логике приложения важным является выбрать последние записи из этой таблицы для каждого пользователя и вывести их на страницу. Сообщений в между очисткой/архивацией таблицы собирается много (до полумиллиона). Конечно можно сохранять в отдельную таблицу интересующие записи, но есть решение и на чистом SQL (работающее до определённого количества записей, конечно :)).

читать дальше...

LIMIT и SQL_CALC_FOUND_ROWS для MS SQL Server

23.05.2010 21:10 / Артём Волк / 1318 просмотров / ...

В MySQL есть несколько полезных дополнений к стандартному SQL:

Обычно, обе эти возможности используются одновременно.

в MS SQL Server всё интереснее...

Проверка на существование добавляемого в таблицу поля в MySQL

19.04.2010 23:20 / Артём Волк / 1643 просмотра / ...

Для программы обновления понадобилось написать SQL-скрипт, который проверял бы перед добавлением нового поля в таблицу, не было ли такое поле добавлено ранее. В MySQL для подобных целей необходимо использовать хранимую процедуру, которая после использования удаляется. Оригинал решения дополнен автоматическим определением названия текущей БД.

читать далее...

Определить на какой странице пейджинга окажется запись (ROW_NUMBER() в MySQL)

13.11.2009 22:01 / Артём Волк / 1451 просмотр / ...

В процессе разработки приложения понадобилось с помощью SQL-запроса к MySQL-базе определить на какой странице пейджинга окажется определённая запись. Ситуация осложнялась тем, что записи могли быть отсортированы по разному.

вариант решения проблемы

Варианты соглашений по именованию объектов в БД

01.11.2009 21:07 / Артём Волк / 1643 просмотра / ...

Несколько разных схем именования объектов в БД. Для примера будет взята база гипотетического блога, хранящая информацию о следующих сущностях: записях (posts), категориях (category) и пользователях (users). Один пост может попадать в одну или несколько категория (связь many-to-many), у одного поста всегда один автор (связь one-to-many).

варианты...

Полнотекстовый поиск в MS SQL Express и его использование с LINQ to SQL

31.10.2009 0:17 / Артём Волк / 4884 просмотра / ...

Для включения функции полнотекстового поиска в MS SQL редакции Express (проверялось на 2005-й версии) нужно немного больше действий, чем для использования полнотекстовых индексов в MyISAM-таблицах MySQL, но всё возможно.

пример...

Выбор значения автоинкрементного поля для вставленной записи в MS SQL

29.10.2009 8:55 / Артём Волк / 897 просмотров / ...

После INSERT нужно выполнить дополнительные действия:

	SqlCommand command = new SqlCommand(@"
		INSERT INTO [dbo].[orders]
				([date_time]
				...
				...
				,[total])
			VALUES
				(@date_time
				...
				...
				,@total); SELECT SCOPE_IDENTITY();
			");                        

	int insertedOrderId = Convert.ToInt32(command.ExecuteScalar());

Страница 1 из 2