Martin,

Thank you. SELECT statement returns lot of columns.

I tried

select coalesce( (select 1,2 ), null);

but got 

ERROR:  subquery must return only one column

How to use your suggestion if select returns lot of columns ?

Andrus.






  ----- Original Message ----- 
  From: Martin 
  To: Andrus 
  Cc: pgsql-general@postgresql.org 
  Sent: Monday, June 21, 2010 10:14 PM
  Subject: Re: [GENERAL] How to force select to return exactly one row


  Try wrapping the entire statement in a COALESCE((statement), <DEFAULT_VALUE>);


  -m


  2010/6/21 Andrus <kobrule...@hot.ee>


    Autogenerated select statement contains 0 .. n left joins:

    SELECT somecolumns
    FROM ko
    LEFT JOIN t1 ON t1.primarykey= ko.t1foreignkwey
    ...
    LEFT JOIN tn ON tn.primarykey= ko.tnforeignkwey
    WHERE ko.primarykey='someprimarykeyvalue';

    This select can return only 0 or 1 rows depending if ko row with primary key
    'someprimarykeyvalue' exists or not.

    Problem:

    if there is no searched primary key row in ko database, select should also
    return empty row.

    To get this result I added right join:

    SELECT somecolumns
    FROM ko
    RIGHT JOIN (SELECT 1) _forceonerow ON true
    LEFT JOIN t1 ON t1.primarykey= ko.t1foreignkwey
    ...
    LEFT JOIN tn ON tn.primarykey= ko.tnforeignkwey
    WHERE ko.primarykey is null or ko.primarykey='someprimarykeyvalue';

    but it still does not return row if primary key row 'someprimarykeyvalue'
    does not exist.

    How to force this statement to return one row always ?

    Andrus.


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



Andrus Moor
OÜ Eetasoft
Akadeemia 21-G302
Tallinn 12618
www.eetasoft.ee
tel. 6654214,  6654215

Reply via email to