UPDATE finished. Example provided.
[dbsrgits/SQL-Abstract-2.0-ish.git] / lib / SQL / Abstract / Manual / Examples.pod
index d6f3caa..4f69af8 100644 (file)
@@ -120,9 +120,8 @@ one. The SQL used is from the MySQL dialect.
           {
               type  => 'SelectComponent',
               value => {
-                  type     => 'Value',
-                  subtype => 'number',
-                  value   => 1,
+                  type     => 'Identifier',
+                  element1 => '*',
               },
           },
       ],
@@ -147,7 +146,290 @@ one. The SQL used is from the MySQL dialect.
                   element1 => 'John',
               },
           ],
-      }
+      },
+  }
+
+=item SELECT COUNT(*) FROM foo WHERE name = 'John' AND ( title = 'Mr' OR abbrev = 'Dr' )
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Operator',
+                  op   => 'COUNT',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => '*',
+                      },
+                  ],
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      where => {
+          type => 'Operator',
+          op   => 'AND',
+          args => [
+              {
+                  type => 'Operator',
+                  op   => '=',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => 'name',
+                      },
+                      {
+                          type     => 'Value',
+                          subtype  => 'String',
+                          element1 => 'John',
+                      },
+                  ],
+              },
+              {
+                  type => 'Operator',
+                  op   => 'OR',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'title',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Mr',
+                              },
+                          ],
+                      },
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'abbrev',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Dr',
+                              },
+                          ],
+                      },
+                  ],
+              },
+          ],
+      },
+  }
+=item SELECT COUNT(DISTINCT(*)) FROM foo WHERE ( name = 'John' AND title = 'Mr' ) OR abbrev = 'Dr'
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+        {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Operator',
+                  op   => 'COUNT',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => 'DISTINCT',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => '*',
+                              },
+                          ],
+                      },
+                  ],
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      where => {
+          type => 'Operator',
+          op   => 'OR',
+          args => [
+              {
+                  type => 'Operator',
+                  op   => 'AND',
+                  args => [
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'name',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'John',
+                              },
+                          ],
+                      },
+                      {
+                          type => 'Operator',
+                          op   => '=',
+                          args => [
+                              {
+                                  type     => 'Identifier',
+                                  element1 => 'title',
+                              },
+                              {
+                                  type     => 'Value',
+                                  subtype  => 'String',
+                                  element1 => 'Mr',
+                              },
+                          ],
+                      },
+                  ],
+              },
+              {
+                  type => 'Operator',
+                  op   => '=',
+                  args => [
+                      {
+                          type     => 'Identifier',
+                          element1 => 'abbrev',
+                      },
+                      {
+                          type     => 'Value',
+                          subtype  => 'String',
+                          element1 => 'Dr',
+                      },
+                  ],
+              },
+          ],
+      },
+  }
+
+=item * SELECT foo, bar baz FROM foo ORDER BY bar, baz DESC GROUP BY 1,3,2
+
+  {
+      type => 'select',
+      ast_version => 0.0001,
+      select => [
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'foo',
+              },
+          },
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  elements => 'bar',
+              },
+          },
+          {
+              type  => 'SelectComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'baz',
+              },
+          },
+      ],
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      orderby => [
+          {
+              type  => 'OrderbyComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'bar',
+              },
+              dir => 'ASC',
+          },
+          {
+              type  => 'OrderbyComponent',
+              value => {
+                  type => 'Identifier',
+                  element1 => 'baz',
+              },
+              dir => 'DESC',
+          },
+      ],
+      groupby => [
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 1,
+              },
+          },
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 3,
+              },
+          },
+          {
+              type  => 'GroupbyComponent',
+              value => {
+                  type => 'Number',
+                  value => 2,
+              },
+          },
+      ],
+  }
+
+=item * UPDATE foo SET col1 = 1
+
+  {
+      type => 'update',
+      ast_version => 0.0001,
+      tables => {
+          type => 'TableIdentifier',
+          value => {
+              type => 'Identifier',
+              element1 => 'foo',
+          },
+      },
+      set => [
+          {
+              type => 'SetComponent',
+              col  => {
+                  type => 'Identifier,
+                  element1 => 'col1',
+              },
+              value => {
+                  type => 'Number',
+                  value => 1,
+              },
+          },
+      ],
   }
 
 =back