Re: ERROR: more than one row returned by a subquery used - Mailing list pgsql-general

From Stephan Szabo
Subject Re: ERROR: more than one row returned by a subquery used
Date
Msg-id 20060505084333.R99933@megazone.bigpanda.com
Whole thread Raw
In response to ERROR: more than one row returned by a subquery used as an expression  ("Arjan Vroege" <arjanvroege@hotmail.com>)
List pgsql-general
On Wed, 3 May 2006, Arjan Vroege wrote:

> Hello,
>
> I have the following Query with Subqueries.
> This query gives the error : ERROR: more than one row returned by a subquery
> used as an expression. Is there a solution to solve this problem:

Scalar subqueries (like the ones in your select list) can't return more
than one row since it'd be effectively random which row's value came out
(and if the values are known to have to be the same you can use distinct
in the subquery).


Given a subquery like this from the query...
>         (SELECT tbl_wk_land.landnaam FROM tbl_wk_land
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_land.landid=tbl_wk_landgroep.landid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.thuisploeg
>             WHERE tbl_wk_land.landid=tbl_wk_landgroep.landid) AS thuisploeg,

Unless I'm missing something in the table naming, this isn't going to be
associated with the particular outer row that the select list is being run
for and the where clause seems redundant with the join clause. Is that the
intent?

>
> SELECT  tbl_wk_wedstrijd.wedstrijdid,
>         tbl_wk_wedstrijd.thuisploeg AS thuisploegid,
>         tbl_wk_wedstrijd.uitploeg AS uitploegid,
>         (SELECT tbl_wk_land.landnaam FROM tbl_wk_land
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_land.landid=tbl_wk_landgroep.landid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.thuisploeg
>             WHERE tbl_wk_land.landid=tbl_wk_landgroep.landid) AS thuisploeg,
>         (SELECT tbl_wk_land.landvlag FROM tbl_wk_land
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_land.landid=tbl_wk_landgroep.landid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.thuisploeg
>             ) AS thuisploegvlag,
>         (SELECT tbl_wk_land.landnaam FROM tbl_wk_land
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_land.landid=tbl_wk_landgroep.landid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.uitploeg
>             ) AS uitploeg,
>         (SELECT tbl_wk_land.landvlag FROM tbl_wk_land
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_land.landid=tbl_wk_landgroep.landid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.uitploeg
>             ) AS uitploegvlag,
>         tbl_wk_stadion.stadionplaats,
>         tbl_wk_stadion.stadionnaam,
>         tbl_wk_stadion.stadiongrootte,
>         tbl_wk_stadion.stadionplaatje,
>         tbl_wk_typewedstrijd.typewedstrijdnaam,
>         tbl_wk_wedstrijd.datumentijd,
>         tbl_wk_wedstrijd.omschrijving,
>         tbl_wk_wedstrijd.uitslagthuis,
>         tbl_wk_wedstrijd.uitslaguit,
>         (SELECT tbl_wk_groep.groepnaam FROM tbl_wk_groep
>             INNER JOIN tbl_wk_landgroep ON
> tbl_wk_groep.groepid=tbl_wk_landgroep.groepid
>             INNER JOIN tbl_wk_wedstrijd ON
> tbl_wk_landgroep.landgroepid=tbl_wk_wedstrijd.thuisploeg
>             ) AS groep
>
>         FROM tbl_wk_wedstrijd   INNER JOIN tbl_wk_stadion ON
> tbl_wk_wedstrijd.stadionid=tbl_wk_stadion.stadionid
>                                 INNER JOIN tbl_wk_typewedstrijd ON
> tbl_wk_wedstrijd.typewedstrijdid=tbl_wk_typewedstrijd.typewedstrijdid;

pgsql-general by date:

Previous
From: "Hogan, James F. Jr."
Date:
Subject: Re: Field names and NEW
Next
From: Tom Lane
Date:
Subject: Re: Syntax problem for a newbie