Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте! Возникла необходимость вычисления соседних id у вытаскиваемой записи из таблицы.
Например, есть таблица table и в ней 100 записей. Пусть к примеру содержимое столбца id идет в таком порядке: 15, 18, 29, 31... Я вытаскиваю запись с id 18. Собсвенно вопрос, как мне вытащить соседние к нему записи с id 15 и 29?
Неактивен
SELECT id FROM tablename WHERE id < 18 ORDER BY id DESC LIMIT 1;
и аналогично второе.
Неактивен
т.е. по любому придется делать два запроса? За один не получится вытащить оба id?
Неактивен
А зачем?
Неактивен
Ну просто чем меньше запросов, тем лучше мне кажется Но все равно спасибо за помощь!
Неактивен
можно вот так сделать, когда вы только вытаскиваете саму запись:
Отредактированно Shopen (03.09.2010 18:46:41)
Неактивен
Но учтите, что это те же три запроса
Неактивен
Ну может у него сервер удаленный
Сэкономит на подключении и анализаторе.
Неактивен
ок, спасибо за ответы! Попробую
Неактивен
Нет, просто люди почему-то считают, что один запрос выполняется быстрее,
чем два. Причем не понятно, откуда следует это заблуждение
Особенно не понятно, потому что как правило они объединяют разную по
смыслу информацию, а потом пытаются разделить ее из одного dataset внутри
клиентского приложения.
Неактивен
Заблуждение идет из другой крайности. Сначала начинают фигачить запросы где не попадя, вытаскивать записи внутри циклов, вместо джойнов вынимать данные из двух, трех... n таблиц скриптом. Потом это начинает тормозить, потом начинают читать, и тут опа, обнаруживается, что все потому что много запросов. Появляется новый абсолют - сократить их до минимума. Обычно это оправдано, но если мозг отключить - то превращается в догму
В данном случае лично я бы одним запросом (который написал) и сделал, потому что если записей вынимается не одна, а 30 например, то он вытащит нужные данные сразу, иначе придется бежать где то циклом и довытаскивать эти prev_id и next_id.
Неактивен
Подозреваю, что человеку таки нужно просто показывать текущий товар
и выдавать ссылки на непосредственных соседей
Неактивен