Я застрял с существующими и не существующими ключевыми словами.
У меня есть таблица (таблица Oracle Portal), которая в сумме имеет следующую структуру:
ID LANGUAGE CAPTION
1 NL DUTCH CAPTION
1 F FRENCH CAPTION
2 NL DUTCH CAPTION
3 F FRENCH CAPTION
Мне нужен выбор, который всегда выбирает две строки для каждого идентификатора, даже если строка F или строка NL не существует. Затем следует выбрать строку с несуществующим языком на языке столбца, но с заголовком существующей строки (с языком F).
Итак, результат запроса должен быть:
ID LANGUAGE CAPTION
1 NL DUTCH CAPTION
1 F FRENCH CAPTION
2 NL DUTCH CAPTION
2 F DUTCH CAPTION
3 F FRENCH CAPTION
3 NL FRENCH CAPTION
Это возможно?
Очень любопытно, и уже большое большое спасибо!!
PS: у меня есть что-то подобное, но это совершенно не то, что я хочу.
SELECT id, language, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((upper(language) = 'NL' AND not exists (SELECT * FROM portal.wwsbr_all_folders p2 WHERE p.id = p2.id and language IN ('F')))
OR
(upper(language) = 'F' AND not exists (SELECT * FROM portal.wwsbr_all_folders p2 WHERE p.id = p2.id and language IN ('NL')))
)
AND parent_id = 4030963
ORDER BY sub_folder_sequence
РЕДАКТИРОВАТЬ: теперь я получаю правильные результаты со следующим запросом
(SELECT id, CASE language WHEN 'nl' THEN 'f' ELSE 'f' END lang, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((language = 'f' and exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'f'))
OR (language = 'nl' and not exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'f')))
AND parent_id = 4656102)
UNION ALL
(
SELECT id, CASE language WHEN 'f' THEN 'nl' ELSE 'nl' END lang, display_name
FROM portal.wwsbr_all_folders p
WHERE caid = 55
AND DISPLAY_IN_PARENT_FOLDER = 1
AND ((language = 'nl' and exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'nl'))
OR (language = 'f' and not exists(SELECT * FROM portal.wwsbr_all_folders p2 WHERE p2.id = p.id AND language = 'nl')))
AND parent_id = 4656102)