opaleye-0.7.3.0: An SQL-generating DSL targeting PostgreSQL
Safe HaskellNone
LanguageHaskell2010

Opaleye.FunctionalJoin

Description

Alternative APIs to inner, left, right, and full outer joins. See Opaleye.Join for details on the best way to do joins in Opaleye.

Synopsis

Full outer join

fullJoinF Source #

Arguments

:: (Default IfPP fieldsResult fieldsResult, Default Unpackspec fieldsL fieldsL, Default Unpackspec fieldsR fieldsR) 
=> (fieldsL -> fieldsR -> fieldsResult)

Calculate result row from input rows for rows in the left and right query satisfying the join condition

-> (fieldsL -> fieldsResult)

Calculate result row from left input row when there are no rows in the right query satisfying the join condition

-> (fieldsR -> fieldsResult)

Calculate result row from right input row when there are no rows in the left query satisfying the join condition

-> (fieldsL -> fieldsR -> Field SqlBool)

Condition on which to join

-> Select fieldsL

Left query

-> Select fieldsR

Right query

-> Select fieldsResult 

Other joins

Inner join

It is recommended that instead of joinF you use restrict directly (along with do notatation, <*>, or arrow notation).

joinF Source #

Arguments

:: (fieldsL -> fieldsR -> fieldsResult)

Calculate result fields from input fields

-> (fieldsL -> fieldsR -> Field SqlBool)

Condition on which to join

-> Select fieldsL

Left query

-> Select fieldsR

Right query

-> Select fieldsResult 

Left/right joins

It is recommended that instead of leftJoinF and rightJoinF you use optional.

leftJoinF Source #

Arguments

:: (Default IfPP fieldsResult fieldsResult, Default Unpackspec fieldsL fieldsL, Default Unpackspec fieldsR fieldsR) 
=> (fieldsL -> fieldsR -> fieldsResult)

Calculate result row from input rows for rows in the right query satisfying the join condition

-> (fieldsL -> fieldsResult)

Calculate result row from input row when there are no rows in the right query satisfying the join condition

-> (fieldsL -> fieldsR -> Field SqlBool)

Condition on which to join

-> Select fieldsL

Left query

-> Select fieldsR

Right query

-> Select fieldsResult 

rightJoinF Source #

Arguments

:: (Default IfPP fieldsResult fieldsResult, Default Unpackspec fieldsL fieldsL, Default Unpackspec fieldsR fieldsR) 
=> (fieldsL -> fieldsR -> fieldsResult)

Calculate result row from input rows for rows in the left query satisfying the join condition

-> (fieldsR -> fieldsResult)

Calculate result row from input row when there are no rows in the left query satisfying the join condition

-> (fieldsL -> fieldsR -> Field SqlBool)

Condition on which to join

-> Select fieldsL

Left query

-> Select fieldsR

Right query

-> Select fieldsResult