"Subquery must return only one column" & query optimization

Поиск
Список
Период
Сортировка
От Philippe Lang
Тема "Subquery must return only one column" & query optimization
Дата
Msg-id E6A0649F1FBFA3408A37F505400E7AC2118531@email.attiksystem.ch
обсуждение исходный текст
Ответы Re: "Subquery must return only one column" & query optimization  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Louis-David Mitterrand
Дата:
Сообщение: Re: optimizing a query
Следующее
От: Tom Lane
Дата:
Сообщение: Re: "Subquery must return only one column" & query optimization