DB2 - подзапрос с несколькими строками, возвращаемый как коррелированная строка - PullRequest
0 голосов
/ 27 января 2011

Я хотел бы вернуть небольшое подмножество данных с большим набором данных ... это действительно ТОЛЬКО должна быть строка при возврате - потому что она просто будет отображаться ... ЭТО ВОЗМОЖНО?

мой сценарий - допустим, у меня есть список людей, и я хочу вернуть этот список - НО включать информацию о том, что они сделали «записи» за три предыдущих дня ...

Я МОГ,зацикливание на главном наборе и повторный запрос к базе данных за последние три даты, когда текущий пользователь сделал «записи», но это приведет к МНОГО дополнительного вызова к базе данных - ужасно неэффективно.

Я МОЖЕТпросто соедините информацию и GROUP на моем выводе (и у меня нет никаких доказательств), но я думаю, что это тоже немного расточительно, так как я полагаюсь на цикл в цикле для своего вывода.

Я ДУМАЮЯ хотел бы вернуть эти «последние три» даты записи в виде простой строки в подзапросе ... так, чтобы набор данных просто содержал «строковое» представление данных, которые я хочу ... поэтому мой вывод цикла был быОЧЕНЬ эффективно ... как мой запрос к БД ...

Вот что у меня есть софар - но это бомбы, и я могу понять, почему ...

SELECT 
        U.intID,
        U.strName,
       (
            SELECT TRIM(CAST(CAST(EO.intData AS CHAR(25)) AS VARCHAR(25))) || ' on ' || TRIM(CAST(EO.dateRecorded AS VARCHAR(25))) || '<br/>'
            FROM   metrics EO
            WHERE  EO.fkID = U.intID
            ORDER BY EO.dateRecorded DESC
            FETCH FIRST 3 ROWS ONLY
        ) AS strLast3
    FROM live.tblUsers U

1 Ответ

0 голосов
/ 03 февраля 2011

Я использую UDF () для такого типа вещей.В основном вы пишете функцию SQL, которая принимает intID в качестве параметра.Затем функция будет искать метрики для этого идентификатора и возвращать их все в виде строки.Таким образом вы не допускаете манипуляций с нечеткой строкой и можете сделать что-то подобное в вашем основном коде:

SELECT U.intID, 
       U.strName, 
       GetMetrics( U.intID )
FROM live.tblUsers U
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...