Hi,

I was trying to run this query this morning:

--------------------------
SELECT 

r.*,

(
        SELECT 

        rl.reminder_header,
        rl.reminder_footer

        FROM reminder_levels AS rl
        WHERE rl.lookup =
        (
                SELECT MAX(reminder_level_lookup) 
                FROM reminders
                WHERE customer_id = r.customer_id
        )
)

FROM reminders AS r
--------------------------

Postgresql replied that:

--------------------------
ERROR: subquery must return only one column
SQL state: 42601
--------------------------

Is there a way to avoid writing:

--------------------------
SELECT 

r.*,

(
        SELECT 

        rl.reminder_header

        FROM reminder_levels AS rl
        WHERE rl.lookup =
        (
                SELECT MAX(reminder_level_lookup) 
                FROM reminders
                WHERE customer_id = r.customer_id
        )
) AS reminder_header,

(
        SELECT 

        rl.reminder_footer

        FROM reminder_levels AS rl
        WHERE rl.lookup =
        (
                SELECT MAX(reminder_level_lookup) 
                FROM reminders
                WHERE customer_id = r.customer_id
        )
) AS reminder_footer

FROM reminders AS r
--------------------------

... which works, but runs twice the same subselect block:

--------------------------
        FROM reminder_levels AS rl
        WHERE rl.lookup =
        (
                SELECT MAX(reminder_level_lookup) 
                FROM reminders
                WHERE customer_id = r.customer_id
        )
--------------------------

Thanks,

Philippe Lang

-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to