diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-04-28 11:14:24 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-04-28 11:14:24 -0400 |
commit | ce12549593feae055d778b34ec9c5abef2b83123 (patch) | |
tree | 462c19c00c540828ba796762b20a4f9eff691726 /lib | |
parent | 008b594412606bbf78fff76daff219a102ce2daa (diff) |
RIGHT and FULL JOIN
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ur/basis.urs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs index a67d007a..c80dde7c 100644 --- a/lib/ur/basis.urs +++ b/lib/ur/basis.urs @@ -246,6 +246,21 @@ val sql_left_join : tabs1 ::: {{Type}} -> tabs2 ::: {{(Type * Type)}} -> sql_exp (tabs1 ++ map (map (fn p :: (Type * Type) => p.1)) tabs2) [] [] bool -> sql_from_items (tabs1 ++ map (map (fn p :: (Type * Type) => p.2)) tabs2) +val sql_right_join : tabs1 ::: {{(Type * Type)}} -> tabs2 ::: {{Type}} + -> [tabs1 ~ tabs2] + => $(map (fn r => $(map (fn p :: (Type * Type) => nullify p.1 p.2) r)) tabs1) + -> sql_from_items (map (map (fn p :: (Type * Type) => p.1)) tabs1) -> sql_from_items tabs2 + -> sql_exp (map (map (fn p :: (Type * Type) => p.1)) tabs1 ++ tabs2) [] [] bool + -> sql_from_items (map (map (fn p :: (Type * Type) => p.2)) tabs1 ++ tabs2) + +val sql_full_join : tabs1 ::: {{(Type * Type)}} -> tabs2 ::: {{(Type * Type)}} + -> [tabs1 ~ tabs2] + => $(map (fn r => $(map (fn p :: (Type * Type) => nullify p.1 p.2) r)) (tabs1 ++ tabs2)) + -> sql_from_items (map (map (fn p :: (Type * Type) => p.1)) tabs1) + -> sql_from_items (map (map (fn p :: (Type * Type) => p.1)) tabs2) + -> sql_exp (map (map (fn p :: (Type * Type) => p.1)) (tabs1 ++ tabs2)) [] [] bool + -> sql_from_items (map (map (fn p :: (Type * Type) => p.2)) (tabs1 ++ tabs2)) + val sql_query1 : tables ::: {{Type}} -> grouped ::: {{Type}} -> selectedFields ::: {{Type}} |