protected static function select_set($operator, $args) { $options = array(); if (is_a($args[0], 'SQLMakerSelect') || is_a($args[0], 'SQLMakerSelectSet')) { $options['quote_char'] = $args[0]->quote_char; $options['name_sep'] = $args[0]->name_sep; $options['new_line'] = $args[0]->new_line; } $stmt = new SQLMakerSelectSet($operator, $options); foreach ($args as $arg) { $stmt->add_statement($arg); } return $stmt; }
function multiple($t) { global $s1, $s2, $s3; $set = SQLMakerSelectSet::intersect(SQLMakerSelectSet::except($s1, $s2), $s3); $t->is($set->as_sql(), 'SELECT id FROM table1 WHERE (foo = ?) EXCEPT SELECT id FROM table2 WHERE (bar = ?) INTERSECT SELECT id FROM table3 WHERE (baz = ?)'); $t->is(implode(',', $set->bind()), '100,200,300'); $set = SQLMakerSelectSet::intersect_all(SQLMakerSelectSet::except($s1, $s2), $s3); $t->is($set->as_sql(), 'SELECT id FROM table1 WHERE (foo = ?) EXCEPT SELECT id FROM table2 WHERE (bar = ?) INTERSECT ALL SELECT id FROM table3 WHERE (baz = ?)'); $t->is(implode(',', $set->bind()), '100,200,300'); $set = SQLMakerSelectSet::union(SQLMakerSelectSet::except($s1, $s2), $s3); $t->is($set->as_sql(), 'SELECT id FROM table1 WHERE (foo = ?) EXCEPT SELECT id FROM table2 WHERE (bar = ?) UNION SELECT id FROM table3 WHERE (baz = ?)'); $t->is(implode(',', $set->bind()), '100,200,300'); $set = SQLMakerSelectSet::union(SQLMakerSelectSet::except_all($s1, $s2), $s3); $t->is($set->as_sql(), 'SELECT id FROM table1 WHERE (foo = ?) EXCEPT ALL SELECT id FROM table2 WHERE (bar = ?) UNION SELECT id FROM table3 WHERE (baz = ?)'); $t->is(implode(',', $set->bind()), '100,200,300'); }