Re: Can't seem to mix an inner and outer join in a query and get it to work right.

From: David Gauthier <davegauthierpg(at)gmail(dot)com>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Can't seem to mix an inner and outer join in a query and get it to work right.
Date: 2020-07-01 16:50:49
Message-ID: CAMBRECBExGpP7_y-+fweq-tNS56Mq3XnVD+7MO==fAArdGNKXg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks!

Actually, I want the outer join first. If it finds something, then move on
to the inner join and filter out all those that don't join to a rec with
'autosmoke'. But if the outer join does not connect to the workarea_env
table, then just return what you have (the purpose of the outer join)

On Mon, Jun 29, 2020 at 9:10 PM David G. Johnston <
david(dot)g(dot)johnston(at)gmail(dot)com> wrote:

> On Monday, June 29, 2020, David Gauthier <davegauthierpg(at)gmail(dot)com> wrote:
>
>>
>> sqf_id | sqf_sl | as_cl |
>> wa_id | type
>>
>>
>> ----------------------------------------------------+---------+---------+-------+-----------
>>
>> * arazhang_20.06.28-20:59:06_soc_navi24_main(at)4404799 | 4404957 | 4405363
>> | 2772 | autosmoke*
>>
>> arazhang_20.06.28-20:59:06_soc_navi24_main(at)4404799 | 4404957 | 4405363
>> | 2773 |
>>
>> arazhang_20.06.28-20:59:06_soc_navi24_main(at)4404799 | 4404957 | 4405363
>> | 2774 |
>>
>> * bgregory_20.06.29-09:46:49_raphael_main(at)1277530 | 1277949 |
>> | |*
>> (4 rows)
>>
>>
>> dvm.workarea_env on
>> dvdb-#
>> (sqf.sqf_runs.submitted_changelist=dvm.workarea_env.p4_changelist)
>> dvdb-# *inner join* dvm.dvm_events on
>> dvdb-# (dvm.workarea_env.wa_id = dvm.dvm_events.wa_id
>> and dvm.dvm_events.type = 'autosmoke')
>> dvdb-# where sqf.sqf_Runs.submitted_shelvelist in (4404957,1277949);
>> sqf_id | sqf_sl | as_cl |
>> wa_id | type
>>
>> ----------------------------------------------------+---------+---------+-------+-----------
>> arazhang_20.06.28-20:59:06_soc_navi24_main(at)4404799 | 4404957 | 4405363
>> | 2772 | autosmoke
>> (1 row)
>>
>>
>> Is there a way to retain the effect of that first outer join while
>> enforcing that inner join ?
>>
>
> The quick non-testable answer is most likely. I usually end up doing
> trial-and-error and adding possibly unnecessary parentheses to force the
> needed order of operations (or moving part of the join into an explicit
> subquery, possibly using a CTE/WITH). Right now it seems that the query is
> forcing, via the inner join, a final output where the column
> type=‘autosmoke’. i.e., its doing the outer join first then the inner.
> You seem to want the reverse.
>
> David J.
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message FOUTE K. Jaurès 2020-07-01 18:21:58 Re: PostgreSQL 12 - ERROR: could not rename file "pg_logical/snapshots/1A-7C00D890.snap.13594.tmp" to "pg_logical/snapshots/1A-7C00D890.snap": No space left on device
Previous Message Alvaro Herrera 2020-07-01 16:11:19 Re: PostgreSQL 12 - ERROR: could not rename file "pg_logical/snapshots/1A-7C00D890.snap.13594.tmp" to "pg_logical/snapshots/1A-7C00D890.snap": No space left on device