Рубрика архива: SQL

SQL запрос в красивый LINQ

есть 2 таблицы, в первой хранится общая информация о книгах и журналах, во второй жанры и некоторые детали.
нужно выбрать все жанры книг которые есть в базе.

SQL запрос:

select distinct info.[GenreId] from [Litera] as lit
join [Information] as info on lit.LitId=info.LitId

как составить простой и красивый linq запрос, вопрос пока остается открытым.

задачка

есть таблица данных (id, № страницы, № пользователя, флаг голосования).

пример таблицы:

нужно выбрать все записи по которым проголосовали все обозначенные в таблице пользователи.

вот эти:

для этой задачки подходит вот такой запрос:

SELECT DISTINCT c1.[page]      
			FROM [dbo].[table] as c1
			LEFT JOIN  [dbo].[table] as c2 
			ON c1.page = c2.page
		WHERE c2.voite = 1

декартово произведение

mssql

SELECT t1.[Id] , t2.[Id]
FROM [dbo].[table1] as t1 CROSS JOIN [dbo].[table2] as t2; 

для каждой записи из таблицы table1 сопоставляются все записи из таблицы table2

SQL, удалить все данные старше 2х дней

В качестве условия в этом запросе служит параметр времени. Тип поля, по которому осуществляется выборка — DATETIME.
Вид запроса:


DELETE FROM `table` WHERE `date` < DATE_ADD( NOW( ) , INTERVAL -2 DAY ); [/sql]

SQL запрос, выборка данных в промежутках между датами

Понадобилось мне выбрать данные, что находится между 2-мя промежутками времени.
Конкретно эти промежутки были описаны так, крайняя левая — самая ранняя запись, крайняя правая — текущий момент.


SELECT *
FROM `base`.`table`
WHERE YEAR( `date` ) >= (
SELECT YEAR( MIN( `date` ) )
FROM `base`.`table`
WHERE 1
LIMIT 1 )
AND MONTH( `date` ) >= (
SELECT MONTH( MIN( `date` ) )
FROM `customer`.`table`
WHERE 1
LIMIT 1 )
AND DAYOFMONTH( `date` ) >= (
SELECT DAYOFMONTH( MIN( `date` ) )
FROM `customer`.`table`
WHERE 1
LIMIT 1 )
AND YEAR( `date` ) <= YEAR( NOW( ) ) AND MONTH( `date` ) <= MONTH( NOW( ) ) AND DAYOFMONTH( `date` ) <= DAYOFMONTH( NOW( ) ) ORDER BY `date` DESC ; [/sql] что делает запрос: он выполняет 3 подзапроса, для выборки минимального года, месяца и числа, в качестве левого условия, и с правой стороны ставит текущие значения даты. Такой вид запроса удобен если параметры как левой части запроса так и правой могут быть заданы.