Пример #1
0
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');
}