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'); }