В SELECT коррелированный подзапрос в select для преобразования rowID в имя строки - PullRequest
0 голосов
/ 12 мая 2019

Как объединить эти 2 набора кода?Таблицы: geregistreerd g, инструмент i и индлинг id.

Я хочу отобразить g.voornaammuzikant, g.achternaammuzikant, i.naaminstrument, id.familie.

Таблицаg связан с таблицей i с instrumentid Таблица i связана с идентификатором таблицы с indelingid

- oefening 1:

SELECT TRIM(' ' FROM g.voornaammuzikant), TRIM(' ' FROM g.achternaammuzikant),
    (SELECT i.naaminstrument 
    from instrument i
    where i.instrumentid = g.instrumentid) as "naam instrument"
from geregistreerd g
order by g.voornaammuzikant;

- oefening2:

SELECT i.naaminstrument, 
(SELECT id.familie
from indeling id 
where i.indelingid = id.indelingid) as "familie",

(SELECT id.onderfamilie
from indeling id 
where i.indelingid = id.indelingid) as "onderfamilie"


from instrument i
order by i.naaminstrument;

КОМБИНИРОВАННЫЕ

SELECT TRIM(' ' FROM g.voornaammuzikant), 
TRIM(' ' FROM g.achternaammuzikant),

(SELECT i.naaminstrument
        (SELECT id.familie
        from indeling id 
        where i.indelingid = id.indelingid) as "familie"
from instrument i
where i.instrumentid = g.instrumentid) as "naam instrument"  
from geregistreerd g
order by g.voornaammuzikant;

1 Ответ

0 голосов
/ 12 мая 2019

Зачем вам делать вещи сложным образом, если их можно упростить? Что не так с простым соединением? Примерно так:

select g.voornaammuzikant, 
       g.achternaammuzikant, 
       i.naaminstrument, 
       id.familie
from geregistreerd g join instrument i on i.instrumentid = g.instrumentid
join indeling id on id.indelingid = i.indelingid
order by g.voornaammuzikant;

Кстати, те TRIM, которые вы опубликовали, выглядят не очень хорошо. SELECT TRIM(' ' FROM g.voornaammuzikant), безусловно, неправильно; Я не знаю, что ты хотел сказать этим. Возможно, удалив лишние пробелы из этих значений? Если они существуют, является ли - случайно - тип данных этого столбца CHAR? Если это так, рассмотрите возможность переключения на VARCHAR2, потому что прежние значения дополняются пробелами до всей длины этого столбца.

...