0xd34df00d
09.06.2011 21:34 Azoth_primary
SQL-ач, помоги. Дано: sqlite и таблица в ней, в которой есть две колонки: например, текстовая Message и таймштамповая Datetime. Надо отсортировать это по Datetime, выбрать строку, соответствующую (LIKE) данной строке, и выбрать вокруг нее N других строк. Как?
Ну или хотя бы узнать расстояние между выбранной строкой и последней по дате строкой. Так даже лучше будет, наверное.
Вычесть/прибавить к дате N, и сделать 2N+1 запросов? Нихуя-не-умею-скуэль-кун
ЭТО БУДЕТ ОЧЕНЬ БЫСТРО.
Олсо, что такое «прибавить к дате N»?
SELECT * FROM table WHERE Datetime < (SELECT Datetime FROM table WHERE message LIKE что_надо) ORDER BY DateTime ASC LIMIT N/2
UNION
SELECT * FROM table WHERE Datetime > (SELECT Datetime FROM table WHERE message LIKE что_надо) ORDER BY DateTime ASC LIMIT N/2
Примерно так, если я правильно понял
>>таблиц, колонки, строку, строке, строк,
за такое мой препод по БД расстрелял бы :-D
Препод так придирается к терминологии? Какой паршивый вузик.
Угу, еще небось NoSQL-щиков считает ниасиляторами.
Я тут подумал, что таки второй вариант лучше — select count(1) from azoth_history where Date > (select Date from azoth_history where Message LIKE ':1' order by date desc limit :2);
Но спасибо, твой буду иметь ввиду.
более того, он сам SQL считает поделкой троешников, уважает чистую реляционную алгебру, Кодда, Чена и Дейта. И, кстати, я с ним немного согласен. И по поводу терминогологии тоже, ибо таблица — это что-то заведомо упорядоченное. А "отношение" в реляционной модели — это математической множество. Со всеми его свойставами. А ещё прибавь нормальные формы с "табличкой" тут будет уже мало общего.
*А ещё прибавь нормальные формы, и с "табличкой" тут будет уже мало общего.
Ну, SQL — говно, чистая реляционная алгебра FTW, это все отлично, конечно, но что в продакшене использовать?
SQL. мы разве спорили об этом?
Ты про http://ru.wikipedia.org/wiki/12_%D0%BF%D... хотя бы ? Не знаю, как можно требовать строгости от СУБД, если до сих пор течет срач про NULL-значения.