Я пытаюсь запустить программу, чтобы проверить, действительны ли ваучеры в таблице ваучеров.Условное внутреннее соединение на основе содержимого первичной таблицы
Существует несколько простых аспектов валидации, например, если ваучер прошел срок действия или нет, но также некоторые ваучеры могут быть условными на основе того, что клиент покупает определенные продукты по бренду или поставщику.
Итак, у меня есть таблица ваучеров
id | brand | supplier | value etc
таблица брендов
id | name etc
и таблица поставщиков
id | name etc
Если ваучер не является специфической для марки или поставщиком, то значение в таблице ваучеров составляет 0
Я пробовал этот запрос Sql, соединяющий внутренние таблицы, но я не получаю никаких результатов, я предполагаю, что это потому, что код ваучера (id), который я пытаюсь использовать, не специфичен для бренда или поставщика?
SELECT *, brands.name as brandName, suppliers.name as supplierName
FROM `vouchers`
INNER JOIN brands on vouchers.brand = brands.id
INNER JOIN suppliers on vouchers.supplier = suppliers.id
WHERE vouchers.id= '" & voucherCode & "'
Как бы я пишу это так, что присоединение таблицы brands
обусловливается значением brand
в таблице vouchers
больше, чем 0 (а затем simiarly для поставщиков)
Я имел взгляд здесь и см. несколько других вопросов, но я боюсь, что не полностью понимаю ответы на вопрос, могу ли я связать их с моей ситуацией.
Использование базы данных MySQL, кстати :-)
Зачем вам делать условное соединение? Используйте 'LEFT JOIN' вместо' INNER JOIN'. Если вы получаете нулевые записи, это означает, что для конкретной записи не найдены результаты. Затем примените логику в своем приложении, если не null - бренды были найдены, если null - нет брендов. Не используйте логику на уровне базы данных. –
В ответ на это просто потому, что я мусор с Sql !! –