"Subquery must return only one column" & query optimization - Mailing list pgsql-sql

From Philippe Lang
Subject "Subquery must return only one column" & query optimization
Date
Msg-id E6A0649F1FBFA3408A37F505400E7AC2118531@email.attiksystem.ch
Whole thread Raw
Responses Re: "Subquery must return only one column" & query optimization  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
Hi,

I was trying to run this query this morning:

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

r.*,

(SELECT
rl.reminder_header,rl.reminder_footer
FROM reminder_levels AS rlWHERE 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 rlWHERE 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 rlWHERE 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 rlWHERE rl.lookup =(    SELECT MAX(reminder_level_lookup)     FROM
reminders   WHERE customer_id = r.customer_id) 
--------------------------

Thanks,

Philippe Lang


pgsql-sql by date:

Previous
From: Louis-David Mitterrand
Date:
Subject: Re: optimizing a query
Next
From: Tom Lane
Date:
Subject: Re: "Subquery must return only one column" & query optimization