Я работаю с очень мета-системой, которая позволяет пользователю определять свою собственную форму и отчеты ... думаю, списки sharepoint или wordpress, но более специфичные для рынка.
В данном конкретном случае клавиша "Collection, Row"У наборов всегда должен быть один отдельный table_id для одного отдельного folder_id, и мы нашли случай, когда некоторые недопустимые данные были получены, и я использовал приведенный ниже запрос для проверки на наличие проблемы.
Мне любопытно, есть лиспособ получения результатов без использования подзапросов.
Это всего лишь учебный / теоретический вопрос, но в конечном итоге мне может понадобиться ввести проверочное ограничение, чтобы эти варианты и производительность не вступили в игру.
/* Only one Database table per collection set */
SELECT
ic.folder_id "Folder #"
, ic.table_id "Table #"
, LISTAGG(ic.column_id
, ',') WITHIN GROUP(
ORDER BY
ic.folder_id
, ic.table_id
) "Columns"
FROM
cols ic
WHERE
ic.folder_id IN (
SELECT
ic02.folder_id
FROM
(
SELECT
ic01.folder_id
, ic01.table_id
FROM
cols ic01
WHERE
v.key_set = 'Collection,Row'
GROUP BY
folder_id
, table_id
) ic02
GROUP BY
ic02.folder_id
HAVING
COUNT(0) > 1
)
GROUP BY
ic.folder_id
, ic.table_id;
<?xml version='1.0' encoding='8859_9' ?>
<RESULTS>
<ROW>
<COLUMN NAME="Folder_#">315</COLUMN>
<COLUMN NAME="Table_#">2141</COLUMN>
<COLUMN NAME="Variables">4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="Folder_#">315</COLUMN>
<COLUMN NAME="Table_#">9020</COLUMN>
<COLUMN NAME="Variables">10924,10926,10934,10935</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="Folder_#">316</COLUMN>
<COLUMN NAME="Table_#">2142</COLUMN>
<COLUMN NAME="Variables">4413,4414,4415,4416,4417,4418,4419</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="Folder_#">316</COLUMN>
<COLUMN NAME="Table_#">9021</COLUMN>
<COLUMN NAME="Variables">10943,10945,10949,10953,10954</COLUMN>
</ROW>
</RESULTS>