Zwrocenie rekordu nawet jesli SELECT nic nie zwrocil

0

Mam podzapytanie, ktore chce, zeby zawsze cos zwracalo. Niestety dla niekorych wartosc nie me recordow. Wiec chce zwrocic po prostu 1. Myslalem, zeby uzyc COALESCE, ale tez niezabardzo chce tak dzialac.

LEFT JOIN (
   SELECT id, amount
    FROM (...)
) AS a
  ON a.id = (...)
0

Możesz np. zrobić unię w podzapytaniu, które w drugim zapytaniu unii bada ilość pierwszego i jezeli = 0 to zwraca 1 wiersz (przyklad z bazy ms sql)

select 1 
where 1=0
union
select 1
where 0 = (select COUNT(*)  where 1=0)
0

Problem jest w tym, ze musze miec dostep do dane z glownego zapytania w tym subquery.

LEFT JOIN (
   SELECT id, amount
    FROM (...)
    -- musze uzyje a.id w subquery, ale subquery nie ma dostepu do a.id 
) AS a
  ON a.id = (...)
0

a po co ma coś zwracać - może chodzi ci o OUTER JOIN: https://cezarywalenciuk.pl/blog/programing/join-inner-outer-left-right ?

1

Pisałem o tym na mikroblogu użyj słówka LATERAL

0

A nie wystarczy Ci, że główne zapytanie zwraca rekord?

http://sqlfiddle.com/#!17/5e95a/8/0

1 użytkowników online, w tym zalogowanych: 0, gości: 1