У меня возникла ситуация, когда я строю новый список на основе значений сортировки в другом столбце.Создание новых элементов на основе значений сортировки
Например стол: продукты идентификатор, имя, sort_order, expiration_date
таблицы: списки идентификатор, PRODUCT_ID
Скажем, я хочу, чтобы всегда иметь 15 продуктов в таблице перечислены и в порядке. Однако срок действия продуктов истекает, и когда это происходит, они удаляются из таблицы списков, тогда нам нужно добавлять новые продукты на основе «next in line» by sort_order (последний идентификатор sort_order в списках + 1, если он существует , если нет, начните сначала).
Я надеюсь, что это имеет смысл ...
Но мой вопрос, есть ли способ, чтобы справиться с этим все в одном запросе?
Прямо сейчас, вот как я бы это сделать:
Query 1: SELECT count(*), sort_order as so FROM lists ORDER BY sort_order DESC
if($count < 15){
$difference = 15 - $count;
for($c = $count; $c >= 1; $c -=1){
Query 2: SELECT id FROM products WHERE sort_order = $so + 1 LIMIT 1
if(results = 0){
Query 3: SELECT id FROM products ORDER BY sort_order ASC LIMIT 1
Query 4: INSERT (id) into lists
}else{
Query 5: INSERT (id) INTO LISTS
}
}
}
Просто кажется, как много запросов на довольно простую задачу .... Любые предложения будут огромными!
Спасибо!
Рекомендации 1: Вы можете поставить вставку о вне, если условиях и вам не нужно еще. Предложение 2: Попробуйте использовать представления вместо табличных списков. Если я правильно понимаю требование, вам нужно 15 продуктов, которые не были проданы для сортировки. Если в этом порядке нет 15 продуктов, поиск товаров в следующем порядке сортировки – Hemang