Pull to refresh
28
0
[BlockDog] @blockdog

И швец, и жнец, и на дуде игрец

Send message
Скорее нет, потому что в данном случае такой составной индекс замедлит условие `date` < $date, которое будет очень быстро работать при индексе KEY `date` (`date`) за счёт «отбрасывания» из индекса всего, что >= $date.

В данном конкретном примере лучше использовать два индекса. Но, спасибо вам за то, что акцентировали на этом внимание — это действительно важно!
| 4 | 2010-03-01 12:00:00 | Test 3 |
| 2 | 2010-03-01 12:00:00 | Test 2 |


SELECT `id` FROM `test` WHERE `date` <= '2010-03-01 12:00:00' AND `id` != 4 ORDER BY `date` DESC, `id` DESC LIMIT 1
Вернет: 2

SELECT `id` FROM `test` WHERE `date` <= '2010-03-01 12:00:00' AND `id` != 2 ORDER BY `date` DESC, `id` DESC LIMIT 1
Вернет: 4

Вот и закольцевалось…

Если вы хотите `date` <= $date AND `id` < $id сделать (как в первом комментарии этой ветки), тогда вы не сможете получить предыдущую запись по дате, у которой ID больше текущего.

В моей тестовой таблице этого случая для предыдущей записи нет, но если вы попробуете таким запросом найти следующую запись: `date` >= $date AND `id` > $id, тогда 3 никогда не выпадет (по дате она после 4, но id у нее не > 4).

WHERE `date` < $date or (`date` = $date and `id` < $id) остается правильным решением, учитывающим это.
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL,
`content` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`)
) ENGINE=MyISAM;
Откуда 2010-02-28?
Все даты: 2010-03-01, отличаются только часом.
Да, тут я сам спалился, попытавшись расшифровать своё же сложное условие задачи (:
Наверное, не так поняли.
При совпадении дат `date` DESC откидывается, и сортируется по `id` DESC.
В данном случае будет возвращаться больший из последовательности ID, отличный от текущего. То есть, для 2 мы получим 4, а для 4 получим 2 — зациклились.
Да! Молодец!
У меня намного сложнее решение, но в принципе, подход примерно такой же.
Спасибо за решение, оно действительно изящное и работает!
Я очень долго бился над формулировкой задачи. Видимо, недостаточно.

Попробую другими словами: есть таблица с записями, нужно для каждой записи таблицы получить предыдущую запись по следующим условиям:
1) дата предыдущей записи меньше или равна текущей записи
2) если дата равна, тогда предыдущая запись определяется последовательностью ID, например, если для записей 123, 456, 789 даты равны, то для 456 предыдущей будет 123, и т.д.

В приведенной в задаче тестовой таблице правильная последовательность предыдущих ID от 5 будет следующая: 5, 3, 4, 2, 1
Нет. Такой запрос для 3 записи вернет 2, а должен вернуть 4.
Затем для 4 он вернет 2, а для 2 вернет 4 — зациклился…
Опишите отдельный запрос с «полной сортировкой».
Если я правильно понимаю, то вы хотите выбрать подзапросом все записи, подходящие под условия `date` <= $date AND `id` != $id, а основным запросом отсеять те, которые не подходят по условию совпадающих дат? Наверное, так тоже можно сделать, но тут всё-таки получится два запроса (точнее запрос с подзапросом), а это не самое лучшее решение — можно одним запросом однозначно определить.
В таком запросе вы не получите предыдущую запись, если даты не совпадают, а ID предыдущей больше, чем текущей. Такое возможно по условиям задачи.
Нужно найти предыдущую запись по дате, но если даты совпадают, тогда предыдущую запись нужно определять по ID.

Посмотрите пример, там две записи (2 и 4) с одинаковыми датами. Нужно сделать так, чтобы для 4 возвращалась 2, а для 2 возвращалась 1. Но при этом нужно, чтобы работала нормальная сортировка по дате, если записей с совпадающими датами нет.

Реально закручено всё, но на примере проще всего понять.
Вот ещё, что я хотел спросить, чего не указано в тексте выше.
Наверняка, разработчики смотрели с радостью на iPad из-за его размеров. Как ты сказал выше, фигуры отрисовываются программно, то есть, для миграции на iPad вам нужно только перерисовать фоны?

Лично я, играя в Finger Physics на iPhone, иногда сильно бесился из-за того, что не мог попасть пальцем в нужное место. А на iPad, вроде как, это проблема должна быть полностью решена.
Отличный постмортем!
Прямо-таки захотелось написать что-нибудь под iPhone / iPod Touch.
На картинке вижу USB вход у Lexicon и не вижу такого у Oppo.
Вполне тянет на $3k… (:
Мечтаю, конечно, но если бы вы прикрутили отслеживание новых серий на популярных российских трекерах, было бы неимоверно круто!
Интересно, а если у меня включена на яйцах переадресация, она считается услугой связи?
«создает впечатление» — правильное выражение, потому что я такого смысла не вкладывал в эту фразу. А уж заставить всех понимать то или иное выражение одинаково — вне моих сил, простите.
Спасибо, идеи неплохие!

Планирую добавить теги (пока только непонятно, в каком виде), они помогут структурировать и тематику, и позитив/негатив.
По поводу возможности закрепить за собой свои сны, я уже писал выше. Таким образом можно будет прослеживать динамику и периоды.
Ну а для глобальной динамики подождем момента, когда хотя бы 1% людей планеты напишет свои сны (: А там, видно будет…

Information

Rating
Does not participate
Registered
Activity