У меня есть две таблицы с информацией об автомобилях, чтобы определить, какой у них тип двигателя. Поэтому мне нужна вторая таблица, где указана вся спецтехника автомобиля. В Таблице 1 различаются режимы «Батарея» и «Без батареи». С помощью ключа специального оборудования из таблицы 2 можно определить, являются ли автомобили «без аккумулятора» гибридами или автомобилями с двигателем внутреннего сгорания. Если у них есть ключ специального оборудования «ABC», это гибридные автомобили. Если нет, то это автомобили внутреннего сгорания.
Таблица 1:
> ID |Car |Engine |
> 1 |RED |BATTERY |
> 2 |YELLOW |NO-BATTERY |
> 3 |BLUE |NO-BATTERY |
Таблица 2:
-ID-|SPECIAL EQUIPMENT
1 |AAA
1 |BBB
1 |CCC
2 |ABC
2 |BBB
2 |CCC
3 |ABC
3 |BBB
3 |CCC
SQL-запрос:
SELECT DISTINCT mytable.id, mytable.car, mytable.engine
FROM
(SELECT table1.id, table1.car, table1.engine, table1.type,
CASE WHEN table1.type = 'Battery' THEN 'BEV'
WHEN table1.type = 'No-Battery' THEN (CASE WHEN special Equipment = 'ABC' THEN 'HYBRID'
ELSE 'COMBUSTION' END)
END AS engine
FROM table1
INNER JOIN table 2 key ON table1.id = table2.id
WHERE (cars.id = 2 )
)t;
Код SQL возвращает для CAR ID 2 --> 2 столбца, один раз для типа двигателя Hybrid и один раз для двигателя внутреннего сгорания.
РЕЗУЛЬТАТ (текущий):
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
> 2 |YELLOW |NO- BATTERY |COMBUSTION
Я ХОЧУ ПОКАЗАТЬ:
> ID |Car |type |engine
> 2 |YELLOW |NO-BATTERY |HYBRID
Результат с горением неправильный, но отображается ... как я могу просто получить один правильный результат?
Я думаю, проблема в том, что вы просите
SELECT DISTINCT mytable.id, mytable.car, mytable.engine
Когда вы хотите показать только отдельный mytable.car
В результатах есть два разных mytable.engine, которые показывают, что они оба разные.
SELECT DISTINCT mytable.car
Я мало знаю о JQL
Я думаю, вы просто хотите exists
:
select t1.*,
(case when exists (select 1
from table2 t2
where t2.id = t1.id and t2.special = 'ABC'
)
then 'Hybrid' else 'Combustion'
end) as engine
from table1 t1;
Может ли это быть внутренним соединением? stackoverflow.com/questions/12526194/… что-то в этом направлении?