69 lines
1.6 KiB
Plaintext
69 lines
1.6 KiB
Plaintext
|
//
|
||
|
//Requirements:
|
||
|
// GROUP BY
|
||
|
// HAVING
|
||
|
// ORDER BY
|
||
|
// ALL
|
||
|
// DISTINCT
|
||
|
// LIKE
|
||
|
// MAX (?)
|
||
|
// MIN (?)
|
||
|
|
||
|
//Notes on joins
|
||
|
//(1) Aliases are enforced once used for any given table
|
||
|
//(2) Alias can be used for some tables, but not others
|
||
|
//
|
||
|
//New style:
|
||
|
// select * from t1 cross join t2
|
||
|
// select * from t1 cross join t2 where t1.x = t2.x
|
||
|
// [Note:CROSS JOIN allows a where clause, other JOIN ops do not, but require ON]
|
||
|
//
|
||
|
// LEFT OUTER JOIN <on>
|
||
|
// RIGHT OUTER JOIN <on>
|
||
|
// FULL OUTER JOIN <on>
|
||
|
// JOIN <on>
|
||
|
// CROSS JOIN <where>
|
||
|
//
|
||
|
//
|
||
|
//
|
||
|
//<select [all|distinct] <select_list> from <> where <>
|
||
|
// [group by] [having] [order by]
|
||
|
|
||
|
|
||
|
|
||
|
//OUTPUT:
|
||
|
//(1) General complexity flags
|
||
|
// A. BOOLEAN: JOIN
|
||
|
// B. BOOLEAN: OLD JOIN
|
||
|
// C. BOOLEAN: NEW JOIN
|
||
|
// D. BOOLEAN: ON Clause
|
||
|
// F. BOOLEAN: SELF-JOIN OCCURS
|
||
|
// G: INT: NUMBER OF TABLES JOINED
|
||
|
// E. BOOLEAN: UNARY Query
|
||
|
// F. BOOLEAN: WBEM Refs/Assocs
|
||
|
//
|
||
|
// F. BOOLEAN: ALIASES
|
||
|
// D. BOOLEAN: WQL 1.0 provider compatible simple query
|
||
|
// F. BOOLEAN: WQL Temporal/Event extension
|
||
|
// E. BOOLEAN: ORDER BY
|
||
|
// F. BOOLEAN: GROUP BY
|
||
|
// G. BOOLEAN: HAVING
|
||
|
// H. SQL-89 COMPATIBLE
|
||
|
// I. SQL-92 COMPATIBLE
|
||
|
// F: DISTINCT
|
||
|
// G: EQUIJOIN
|
||
|
// H: THETA-JOIN <non equijoin>
|
||
|
//
|
||
|
// (2) Get number & list of classes/tables (NULL separated)
|
||
|
// (3) Get list of selected column references in the output
|
||
|
// (4) Get list of column names used in ON
|
||
|
// (5) Get list of column names used in WHERE
|
||
|
|
||
|
//(2) Select column list
|
||
|
|
||
|
|
||
|
//(3) Add *= and =* operators
|
||
|
|
||
|
|
||
|
//
|