У меня есть таблица продуктов по умолчанию.Несколько CASE в SQL QUERY
ТАБЛИЦА: продукты
id|product|price|
У меня есть еще один стол для рекламных акций
ТАБЛИЦЫ: рекламные акции
id|description|
И есть другая таблица с ценами на акции
ТАБЛИЦА: цены
id|product_id|promotion_id|price|
Что я пытаюсь сделать, это:
Получить продукт, проверьте, есть ли цена в таблице цен с кодом акции «1». Если нет, проверьте с помощью кода промо-акции «2» и, если по-прежнему нет результатов, используйте цену по умолчанию из таблицы «товары».
Теперь я могу получить все продукты в одном SQL, а затем для каждого поиска результата по цене, но я работаю с примерно 23 тысячами записей в базе данных Android SQLite, и время обработки не является удовлетворительным.
Итак, я попытался с футляром, как это:
SELECT product,
CASE
WHEN EXISTS (SELECT price FROM price p1 WHERE p1.product_id = prod.id AND p1.promotion_id = 1)
THEN (SELECT price FROM price p1 WHERE p1.product_id = prod.id AND p1.promotion_id = 1)
WHEN EXISTS (SELECT price FROM price p1 WHERE p1.product_id = prod.id AND p1.promotion_id = 2)
THEN (SELECT price FROM price p1 WHERE p1.product_id = prod.id AND p1.promotion_id = 2)
ELSE price
END,
FROM products prod
Но это по-прежнему очень медленно производительности.
Возможно, у кого-то есть другой способ преодолеть это?
Извините, что не выбрал свой ответ. Мне нравится способ, которым также была добавлена таблица рекламных акций, но сначала ответил @felix. – Eduvm
Не потейте об этом. Просто рад помочь. Не слишком беспокоился о правильном/неправильном: P надеюсь, что это сработало для вас и дало вам идеи – brett