2013-10-04 2 views
0

У меня есть база данных, где у меня есть таблица для продуктов и таблица для импортеров продуктов. Я делаю систему сортировки на странице списка продуктов, сортировка по имени, цене и выпуску не была проблемой для меня. Но теперь я хотел бы также добавить сортировку по времени доставки. И это немного сложно, потому что сроки доставки зависят от нескольких разных вещей. Вот необходимые поля моих двух таблиц, что может просветить меня ситуация немного:Заказ списка товаров по времени доставки - кажется слишком сложным с таким количеством условий

products: 

    quantity 
    status 
    importer (id of product importer) 


importers: 

    id 
    deliveryMin 
    deliveryMax 

и ситуации доставки от самой быстрой до медленной:

  1. Если количество продукта больше, чем 0 , это означает, что у нас есть это на складе, а срок поставки - 1-2 дня. В этой ситуации доставка самая быстрая.

  2. Если количество 0, мы должны искать сроки доставки импортеров. Перед этим - статус должен быть проверен. Итак: если статус равен 1, импортер (помеченный в таблице продуктов в каждой строке продукта) имеет его на складе, а затем мы должны посмотреть таблицу импортеров для доставкиMin и deliveryMax. У разных импортеров может быть разная доставкаMin и deliveryMax, и это должно быть как-то тоже выглядеть. Поскольку продукты, имеющие статус 1, могут по-прежнему иметь разные сроки доставки, и они также должны быть отсортированы.

  3. Если количество товаров равно 0, и состояние продукта равно 2, это значит, что у нас его нет на складе, и ни один из импортеров этого продукта на складе. Это самый медленный вариант доставки, 7-14 дней.

Этот способ слишком сложный для выполнения запроса MySQL? Как заказывать время доставки, если для этого не просто поле, но информация должна быть получена с использованием так много шагов.

Это было действительно легко скомпоновать PHP с просмотром страницы продукта, потому что есть только один продукт, и вам не нужно сравнивать его ни с чем.

ответ

0

Мне кажется, что Товар принадлежит Импортеру (у одного продукта не может быть более одного импортера, правильно?). Таким образом:

SELECT * FROM 
(
    SELECT products.*, 
    IF(quantity > 0, 1, IF(status=2, 7, importers.deliveryMin)) as delivery_min, 
    IF(quantity > 0, 2, IF(status=2, 14, importers.deliveryMax)) as delivery_max 
    FROM products LEFT JOIN importers ON 
    products.importer = importers.id 
) as product_delivery 
ORDER BY delivery_max 
Смежные вопросы