Я считаю, что ваша главная ошибка в том, что ovv0 не определен. Укажите свой inner join
, а затем свой пункт.
SELECT * FROM variants v
INNER JOIN option_values_variants ovv0 ON v.id = ovv0.variant_id
INNER JOIN option_values_variants ovv1 ON v.id = ovv1.variant_id
INNER JOIN option_values_variants ovv2 ON v.id = ovv2.variant_id
INNER JOIN option_values_variants ovv3 ON v.id = ovv3.variant_id
INNER JOIN option_values_variants ovv4 ON v.id = ovv4.variant_id
WHERE v.deleted_at = NULL AND v.product_id = 106050059;
Я также хотел бы, чтобы мы выяснили, почему вы используете так много внутренних объединений на одном столе. Что вы пытаетесь достичь?
EDIT:
Для пустых значений SQLite сложен и считает пустым тип. Также не существует истинного типа даты и времени. Вы можете проверить тип столбца с помощью функции typeof
, которая возвращает строку.
SELECT * FROM variants v
...
WHERE typeof(v.deleted_at) = 'null' AND v.product_id = 106050059;
Пересоздать:
Там также ifnull
. Эта функция заменяет нуль на любое значение, которое вы хотите. Так что в вашем случае, с помощью одной команды вы можете проверить натуральные 0 и нули в одном кадре. Если вы не хотите иметь натуральные 0 и только нули, используйте другое значение, которое не должно быть датой (скажем, -1), и сравните его.
SELECT * FROM variants v
...
WHERE ifnull(v.deleted_at,0) = 0 AND v.product_id = 106050059;