select event_id,
IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_title ,'') event_subtitle
from event e where log_id='%s'
результаты этого запроса только для "event_title" и показывают пустой результат для "event_subtitle", хотя у меня есть данные для результата "event_subtitle"
есть ли у вас ошибка, не получается ожидаемый результат или что-то еще?
какой код sql вы хотите, чтобы ваш код не был связан с какими-либо командами sql ??
Что такое псевдоним e? Вы не использовали псевдоним вашей таблицы event как e
@ isuru89 уже делает это с помощью OP from event e where log_id='%s'
этот запрос результаты только для «event_title» и показывают пустой результат для «event_subtitle», хотя у меня есть данные для результата «event_subtitle», это потому, что event_type = 'C' не имеет ни в одном столбце
Ваш код должен работать, можете ли вы предоставить образцы данных (в виде текста в вопросе), которые демонстрируют, что это не так.






Проверь это:
select event_id,
case when event_type<>'C' then e.event_title end as event_title,
case when event_type='C'then e.event_title end as event_subtitle
from event where log_id='%s';
Например:
SELECT ename ,
case when job='SALESMAN' then ename end as salesman_ename,
case when job<>'SALESMAN' then ename end as not_salesman_ename
FROM scott.emp;
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAKE BLAKE
CLARK CLARK
SCOTT SCOTT
KING KING
TURNER TURNER
ADAMS ADAMS
JAMES JAMES
FORD FORD
MILLER MILLER
H H
кажется, ты хочешь этого
Может быть, если событие имеет псевдоним e
Вы пишете event_title в обоих состояниях, но в соответствии с вашим требованием я знаю, что вы хотите IF(event_type='C', e.event_subtitle ,'') event_subtitle
Меняться от
IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_title ,'') event_subtitle
К
IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_subtitle ,'') event_subtitle
^^^^^^^^^^^
Код, например, "работает"
drop table if exists event;
create table event(event_id int, event_type varchar(1), event_title varchar(10));
insert into event values
(1,'c','aaa'),(2,'x','xxx');
select event_id,
IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_title ,'') event_subtitle
from event e;
+----------+-------------+----------------+
| event_id | event_title | event_subtitle |
+----------+-------------+----------------+
| 1 | | aaa |
| 2 | xxx | |
+----------+-------------+----------------+
2 rows in set (0.00 sec)
Если ваша модель данных не выглядит так или результат, основанный на моих выборочных данных, не соответствует вашим ожиданиям, добавьте образцы данных и желаемый результат в вопрос в виде текста.
Интересно, нужна ли вам агрегация:
select event_id,
max(case when event_type <> 'C' then e.event_title end) as event_title,
max(case when event_type = 'C' then e.event_title end) as event_subtitle
from event e
where log_id = '%s'
group by event_id;