Author: jamestaylor
Date: Mon May 18 17:20:55 2015
New Revision: 1680060

URL: http://svn.apache.org/r1680060
Log:
Update grammar to include UNION ALL

Modified:
    phoenix/phoenix-docs/src/docsrc/help/phoenix.csv
    phoenix/site/publish/language/datatypes.html
    phoenix/site/publish/language/functions.html
    phoenix/site/publish/language/index.html

Modified: phoenix/phoenix-docs/src/docsrc/help/phoenix.csv
URL: 
http://svn.apache.org/viewvc/phoenix/phoenix-docs/src/docsrc/help/phoenix.csv?rev=1680060&r1=1680059&r2=1680060&view=diff
==============================================================================
--- phoenix/phoenix-docs/src/docsrc/help/phoenix.csv (original)
+++ phoenix/phoenix-docs/src/docsrc/help/phoenix.csv Mon May 18 17:20:55 2015
@@ -1,19 +1,10 @@
 "SECTION","TOPIC","SYNTAX","TEXT","EXAMPLE"
 "Commands","SELECT","
-SELECT [/*+ hint */] [DISTINCT | ALL] selectExpression [,...]
-FROM tableSpec [ { [joinType] JOIN tableSpec ON expression } [...] ]
-[ WHERE expression ]
-[ GROUP BY expression [,...] ] [ HAVING expression ]
+selectStatement [ { UNION ALL selectStatement [...] } ]
 [ ORDER BY order [,...] ] [ LIMIT {bindParameter | number} ]
 ","
-Selects data from a table.
-DISTINCT filters out duplicate results while ALL, the default, includes all 
results.
-FROM identifies the table being queried. Columns may be dynamically defined in 
parenthesis
-after the table name and then used in the query. Joins are processed in 
reverse order through a
-broadcast hash join mechanism. For best performance, order tables from largest 
to smallest in
-terms of how many rows you expect to be used from each table.
-GROUP BY groups the the result by the given expression(s).
-HAVING filters rows after grouping.
+Selects data from one or more tables.
+UNION ALL combines rows from multiple select statements.
 ORDER BY sorts the result based on the given expressions.
 LIMIT limits the number of rows returned by the query with no limit applied if 
unspecified or specified
 as null or less than zero. The LIMIT clause is executed after the ORDER BY 
clause to support top-N type
@@ -21,14 +12,9 @@ queries.
 An optional hint may be used to override decisions made by the query optimizer.
 
 ","
-SELECT * FROM TEST;
-SELECT a.* FROM TEST;
-SELECT DISTINCT NAME FROM TEST;
-SELECT ID, COUNT(1) FROM TEST GROUP BY ID;
-SELECT NAME, SUM(VAL) FROM TEST GROUP BY NAME HAVING COUNT(1) > 2;
-SELECT 'ID' COL, MAX(ID) AS MAX FROM TEST;
 SELECT * FROM TEST LIMIT 1000;
-SELECT d.dept_id,e.dept_id,e.name FROM DEPT d JOIN EMPL e ON e.dept_id = 
d.dept_id;
+SELECT full_name FROM SALES_PERSON WHERE ranking >= 5.0
+    UNION ALL SELECT reviewer_name FROM CUSTOMER_REVIEW WHERE score >= 8.0
 "
 "Commands","UPSERT VALUES","
 UPSERT INTO tableName [( { columnRef | columnDef } [,...] )] VALUES ( 
constantTerm [,...] )
@@ -484,6 +470,29 @@ ID AS VALUE
 VALUE + 1 VALUE_PLUS_ONE
 "
 
+"Other Grammar","Select Statement","
+SELECT [/*+ hint */] [DISTINCT | ALL] selectExpression [,...]
+FROM tableSpec [ { [joinType] JOIN tableSpec ON expression } [...] ]
+[ WHERE expression ]
+[ GROUP BY expression [,...] ] [ HAVING expression ]
+","
+Selects data from a table.
+DISTINCT filters out duplicate results while ALL, the default, includes all 
results.
+FROM identifies the table being queried. Columns may be dynamically defined in 
parenthesis
+after the table name and then used in the query. Joins are processed in 
reverse order through a
+broadcast hash join mechanism. For best performance, order tables from largest 
to smallest in
+terms of how many rows you expect to be used from each table.
+GROUP BY groups the the result by the given expression(s).
+HAVING filters rows after grouping.
+An optional hint may be used to override decisions made by the query optimizer.
+
+","
+SELECT * FROM TEST;
+SELECT DISTINCT NAME FROM TEST;
+SELECT ID, COUNT(1) FROM TEST GROUP BY ID;
+SELECT NAME, SUM(VAL) FROM TEST GROUP BY NAME HAVING COUNT(1) > 2;
+SELECT d.dept_id,e.dept_id,e.name FROM DEPT d JOIN EMPL e ON e.dept_id = 
d.dept_id;
+"
 "Other Grammar","Split Point","
 value | bindParameter
 

Modified: phoenix/site/publish/language/datatypes.html
URL: 
http://svn.apache.org/viewvc/phoenix/site/publish/language/datatypes.html?rev=1680060&r1=1680059&r2=1680060&view=diff
==============================================================================
--- phoenix/site/publish/language/datatypes.html (original)
+++ phoenix/site/publish/language/datatypes.html Mon May 18 17:20:55 2015
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2015-05-04
+ Generated by Apache Maven Doxia at 2015-05-18
  Rendered using Reflow Maven Skin 1.1.0 
(http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">

Modified: phoenix/site/publish/language/functions.html
URL: 
http://svn.apache.org/viewvc/phoenix/site/publish/language/functions.html?rev=1680060&r1=1680059&r2=1680060&view=diff
==============================================================================
--- phoenix/site/publish/language/functions.html (original)
+++ phoenix/site/publish/language/functions.html Mon May 18 17:20:55 2015
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2015-05-04
+ Generated by Apache Maven Doxia at 2015-05-18
  Rendered using Reflow Maven Skin 1.1.0 
(http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">

Modified: phoenix/site/publish/language/index.html
URL: 
http://svn.apache.org/viewvc/phoenix/site/publish/language/index.html?rev=1680060&r1=1680059&r2=1680060&view=diff
==============================================================================
--- phoenix/site/publish/language/index.html (original)
+++ phoenix/site/publish/language/index.html Mon May 18 17:20:55 2015
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2015-05-04
+ Generated by Apache Maven Doxia at 2015-05-18
  Rendered using Reflow Maven Skin 1.1.0 
(http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
@@ -254,6 +254,8 @@ syntax-end -->
 
     <a href="#select_expression" >Select Expression</a><br />
 
+    <a href="#select_statement" >Select Statement</a><br />
+
     <a href="#split_point" >Split Point</a><br />
 
     <a href="#table_spec" >Table Spec</a><br />
@@ -362,6 +364,8 @@ syntax-end -->
             
                 <a href="#select_expression" >Select Expression</a><br />
             
+                <a href="#select_statement" >Select Statement</a><br />
+            
                 <a href="#split_point" >Split Point</a><br />
             
                 <a href="#table_spec" >Table Spec</a><br />
@@ -402,9 +406,9 @@ syntax-end -->
                 <a href="#bind_parameter" >Bind Parameter</a><br />
             
                 <a href="#value" >Value</a><br />
-                    </td><td class="index">
             
                 <a href="#case" >Case</a><br />
+                    </td><td class="index">
             
                 <a href="#case_when" >Case When</a><br />
             
@@ -446,29 +450,23 @@ syntax-end -->
 <h3 id="select" class="notranslate">SELECT</h3>
 <!-- railroad-start -->
 <pre name="bnf" style="display: none">
-SELECT [/*+ <a href="index.html#hint">hint</a> */] [DISTINCT | ALL] <a 
href="index.html#select_expression">selectExpression</a> [,...]
-FROM <a href="index.html#table_spec">tableSpec</a> [ { [<a 
href="index.html#join_type">joinType</a>] JOIN <a 
href="index.html#table_spec">tableSpec</a> ON <a 
href="index.html#expression">expression</a> } [...] ]
-[ WHERE <a href="index.html#expression">expression</a> ]
-[ GROUP BY <a href="index.html#expression">expression</a> [,...] ] [ HAVING <a 
href="index.html#expression">expression</a> ]
+<a href="index.html#select_statement">selectStatement</a> [ { UNION ALL <a 
href="index.html#select_statement">selectStatement</a> [...] } ]
 [ ORDER BY <a href="index.html#order">order</a> [,...] ] [ LIMIT {<a 
href="index.html#bind_parameter">bindParameter</a> | <a 
href="index.html#number">number</a>} ]
 </pre>
 <div name="railroad">
-<table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">SELECT</code></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">/ * + <a href="index.html#hint">hint</a> * 
/</code></td></tr></table></td><td class="le"></td></tr></table></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="ts"></td><td class="d"><code class="c">DISTINCT</code></td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><code class="c">ALL</code></td><td 
class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td 
class="d"><code class="c"><a href="index.ht
 ml#select_expression">selectExpression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="d"><code class="c">FROM <a 
href="index.html#table_spec">tableSpec</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c"><a 
href="index.html#join_type">joinType</a></code></td><td 
class="le"></td></tr></table></td><td class=
 "d"><code class="c">JOIN <a href="index.html#table_spec">tableSpec</a> ON <a 
href="index.html#expression">expression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="d"><code class="c">WHERE <a 
href="index.html#expression">expression</a></code></td></tr></table></td><td 
class="le"></td></tr></table><br /><table class="railroad"><tr 
class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td 
class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></
 tr><tr class="railroad"><td class="ls"></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="d"><code class="c">GROUP BY <a 
href="index.html#expression">expression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">HAVING <a 
href="index.html#expression">expression</a></code></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr 
 class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">ORDER BY <a href="index.html#order">order</a></code></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">LIMIT</code></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d"><code class="c"><a 
href="index.html#bind_pa
 rameter">bindParameter</a></code></td><td class="te"></td></tr><tr 
class="railroad"><td class="ls"></td><td class="d"><code class="c"><a 
href="index.html#number">number</a></code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table>
+<table class="railroad"><tr class="railroad"><td class="d"><code class="c"><a 
href="index.html#select_statement">selectStatement</a></code></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="d"><code class="c">UNION ALL <a 
href="index.html#select_statement">selectStatement</a></code></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="ra
 ilroad"><td class="ls"></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="d"><code class="c">ORDER BY <a 
href="index.html#order">order</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">LIMIT</code></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d"><code class="c"><a 
href="index.html#bind_parameter">bindParameter</a></code></td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"><
 /td><td class="d"><code class="c"><a 
href="index.html#number">number</a></code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table>
 </div>
 <!-- railroad-end -->
 <!-- syntax-start
 <pre>
-SELECT [/*+ <a href="index.html#hint">hint</a> */] [DISTINCT | ALL] <a 
href="index.html#select_expression">selectExpression</a> [,...]
-FROM <a href="index.html#table_spec">tableSpec</a> [ { [<a 
href="index.html#join_type">joinType</a>] JOIN <a 
href="index.html#table_spec">tableSpec</a> ON <a 
href="index.html#expression">expression</a> } [...] ]
-[ WHERE <a href="index.html#expression">expression</a> ]
-[ GROUP BY <a href="index.html#expression">expression</a> [,...] ] [ HAVING <a 
href="index.html#expression">expression</a> ]
+<a href="index.html#select_statement">selectStatement</a> [ { UNION ALL <a 
href="index.html#select_statement">selectStatement</a> [...] } ]
 [ ORDER BY <a href="index.html#order">order</a> [,...] ] [ LIMIT {<a 
href="index.html#bind_parameter">bindParameter</a> | <a 
href="index.html#number">number</a>} ]
 </pre>
 syntax-end -->
-<p>Selects data from a table. <code>DISTINCT</code> filters out duplicate 
results while <code>ALL</code>, the default, includes all results. 
<code>FROM</code> identifies the table being queried. Columns may be 
dynamically defined in parenthesis after the table name and then used in the 
query. Joins are processed in reverse order through a broadcast hash join 
mechanism. For best performance, order tables from largest to smallest in terms 
of how many rows you expect to be used from each table. <code>GROUP BY</code> 
groups the the result by the given expression(s). <code>HAVING</code> filters 
rows after grouping. <code>ORDER BY</code> sorts the result based on the given 
expressions. <code>LIMIT</code> limits the number of rows returned by the query 
with no limit applied if unspecified or specified as null or less than zero. 
The <code>LIMIT</code> clause is executed after the <code>ORDER BY</code> 
clause to support top-N type queries. An optional hint may be used to override 
decisions m
 ade by the query optimizer.</p>
+<p>Selects data from one or more tables. <code>UNION ALL</code> combines rows 
from multiple select statements. <code>ORDER BY</code> sorts the result based 
on the given expressions. <code>LIMIT</code> limits the number of rows returned 
by the query with no limit applied if unspecified or specified as null or less 
than zero. The <code>LIMIT</code> clause is executed after the <code>ORDER 
BY</code> clause to support top-N type queries. An optional hint may be used to 
override decisions made by the query optimizer.</p>
 <p>Example:</p>
 <p class="notranslate">
-SELECT * FROM TEST;<br />SELECT a.* FROM TEST;<br />SELECT DISTINCT NAME FROM 
TEST;<br />SELECT ID, COUNT(1) FROM TEST GROUP BY ID;<br />SELECT NAME, 
SUM(VAL) FROM TEST GROUP BY NAME HAVING COUNT(1) &gt; 2;<br />SELECT 
&#39;ID&#39; COL, MAX(ID) AS MAX FROM TEST;<br />SELECT * FROM TEST LIMIT 
1000;<br />SELECT d.dept_id,e.dept_id,e.name FROM DEPT d JOIN EMPL e ON 
e.dept_id = d.dept_id;</p>
+SELECT * FROM TEST LIMIT 1000;<br />SELECT full_name FROM SALES_PERSON WHERE 
ranking &gt;= 5.0<br />&nbsp;&nbsp;&nbsp;&nbsp;UNION ALL SELECT reviewer_name 
FROM CUSTOMER_REVIEW WHERE score &gt;= 8.0</p>
 
 <h3 id="upsert_values" class="notranslate">UPSERT VALUES</h3>
 <!-- railroad-start -->
@@ -962,6 +960,22 @@ syntax-end -->
 <p>Example:</p>
 <p class="notranslate">*<br />cf.*<br />ID AS VALUE<br />VALUE + 1 
VALUE_PLUS_ONE</p>
 
+<h3 id="select_statement" class="notranslate">Select Statement</h3>
+<!-- railroad-start -->
+<table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">SELECT</code></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">/ * + <a href="index.html#hint">hint</a> * 
/</code></td></tr></table></td><td class="le"></td></tr></table></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="ts"></td><td class="d"><code class="c">DISTINCT</code></td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><code class="c">ALL</code></td><td 
class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td 
class="d"><code class="c"><a href="index.ht
 ml#select_expression">selectExpression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="d"><code class="c">FROM <a 
href="index.html#table_spec">tableSpec</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c"><a 
href="index.html#join_type">joinType</a></code></td><td 
class="le"></td></tr></table></td><td class=
 "d"><code class="c">JOIN <a href="index.html#table_spec">tableSpec</a> ON <a 
href="index.html#expression">expression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table><br /><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td 
class="d"><code class="c">WHERE <a 
href="index.html#expression">expression</a></code></td></tr></table></td><td 
class="le"></td></tr></table><br /><table class="railroad"><tr 
class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td 
class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></
 tr><tr class="railroad"><td class="ls"></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="d"><code class="c">GROUP BY <a 
href="index.html#expression">expression</a></code></td><td class="d"><table 
class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td 
class="ls"></td><td class="d"><code class="c">, ...</code></td><td 
class="le"></td></tr></table></td></tr></table></td><td 
class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr 
class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><table class="railroad"><tr class="railroad"><td class="d"><code 
class="c">HAVING <a 
href="index.html#expression">expression</a></code></td></tr></table></td><td 
class="le"></td></tr></table></td></tr></table>
+<!-- railroad-end -->
+<!-- syntax-start
+<pre>
+SELECT [/*+ <a href="index.html#hint">hint</a> */] [DISTINCT | ALL] <a 
href="index.html#select_expression">selectExpression</a> [,...]
+FROM <a href="index.html#table_spec">tableSpec</a> [ { [<a 
href="index.html#join_type">joinType</a>] JOIN <a 
href="index.html#table_spec">tableSpec</a> ON <a 
href="index.html#expression">expression</a> } [...] ]
+[ WHERE <a href="index.html#expression">expression</a> ]
+[ GROUP BY <a href="index.html#expression">expression</a> [,...] ] [ HAVING <a 
href="index.html#expression">expression</a> ]
+</pre>
+syntax-end -->
+<p>Selects data from a table. <code>DISTINCT</code> filters out duplicate 
results while <code>ALL</code>, the default, includes all results. 
<code>FROM</code> identifies the table being queried. Columns may be 
dynamically defined in parenthesis after the table name and then used in the 
query. Joins are processed in reverse order through a broadcast hash join 
mechanism. For best performance, order tables from largest to smallest in terms 
of how many rows you expect to be used from each table. <code>GROUP BY</code> 
groups the the result by the given expression(s). <code>HAVING</code> filters 
rows after grouping. An optional hint may be used to override decisions made by 
the query optimizer.</p>
+<p>Example:</p>
+<p class="notranslate">SELECT * FROM TEST;<br />SELECT DISTINCT NAME FROM 
TEST;<br />SELECT ID, COUNT(1) FROM TEST GROUP BY ID;<br />SELECT NAME, 
SUM(VAL) FROM TEST GROUP BY NAME HAVING COUNT(1) &gt; 2;<br />SELECT 
d.dept_id,e.dept_id,e.name FROM DEPT d JOIN EMPL e ON e.dept_id = d.dept_id;</p>
+
 <h3 id="split_point" class="notranslate">Split Point</h3>
 <!-- railroad-start -->
 <table class="railroad"><tr class="railroad"><td class="ts"></td><td 
class="d"><code class="c"><a href="index.html#value">value</a></code></td><td 
class="te"></td></tr><tr class="railroad"><td class="ls"></td><td 
class="d"><code class="c"><a 
href="index.html#bind_parameter">bindParameter</a></code></td><td 
class="le"></td></tr></table>


Reply via email to