#sql
#sql
Вопрос:
У меня есть эта функция, где я считаю данные из базы данных.
например
Select column1, count(), column2
from table1
left join table 2 and so on
where --- some statement
and (table1.date - table2.date) <= 2
group by column1, column2
Теперь, что мне нужно, это сделать что-то подобное в моем предложении where для каждого данные, которые я бы проверил, имеет ли table2 статус 1, мое предложение where было бы где status = 1, но если это не так, где status = 2
это потому, что мне нужно, чтобы в моей таблице2 был статус 1, это данные, которые я бы использовал в моей таблице2.date, если этого не произойдет, я бы использовал данные статуса 2 в качестве table2.date
Комментарии:
1. В вашем запросе вообще не упоминается
status
, поэтому логике довольно сложно следовать.
Ответ №1:
если table2 имеет статус 1, мое предложение where будет где status = 1, но если это не так, где status = 2
Для меня это было бы переведено как следующие условия в WHERE
предложении вашего запроса:
(table2.status = 1 AND table1.status = 1) OR table1.status = 2
Комментарии:
1. у меня есть и дополнительные ((выберите count из table2, где table2.id = table1.id и table2.status =1) И table1.status = 1) ИЛИ table1.status = 2 это тоже правильно?
2. @kev_m: Я просто переводил ваш английский на SQL. Теперь, если вы хотите полностью рабочий запрос, вам нужно сначала показать нам весь ваш текущий SQL-запрос…
3. единственное, что я хочу здесь, это если есть счетчик, где status = 1 и table1.id равно table2.status установить status = 1 или иначе установить в статус 2
Ответ №2:
Предполагая отсутствие NULL
значений в status
столбцах, требуемая логика:
where (table2.status = 1 and table1.status = 1) or
(table2.status <> 1 and table1.status = 2)