function select_subquery($t) { $builder = new SQLMaker('sqlite', array('quote_char' => '', 'new_line' => ' ')); do { $stmt1 = $builder->select_query('sakura', array('hoge', 'fuga'), array('fuga' => 'piyo', 'zun' => 'doko')); $t->is($stmt1->as_sql(), 'SELECT hoge, fuga FROM sakura WHERE (fuga = ?) AND (zun = ?)'); $t->is(implode(',', $stmt1->bind()), 'piyo,doko'); } while (false); do { $stmt2 = $builder->select_query(array($stmt1, 'stmt1'), array('foo', 'bar'), array('bar' => 'baz', 'john' => 'man')); $t->is($stmt2->as_sql(), 'SELECT foo, bar FROM (SELECT hoge, fuga FROM sakura WHERE (fuga = ?) AND (zun = ?)) stmt1 WHERE (bar = ?) AND (john = ?)'); $t->is(implode(',', $stmt2->bind()), 'piyo,doko,baz,man'); } while (false); do { $stmt3 = $builder->select_query(array($stmt2, 'stmt2'), array('baz'), array('baz' => 'bar'), array('order_by' => 'yo')); $t->is($stmt3->as_sql(), 'SELECT baz FROM (SELECT foo, bar FROM (SELECT hoge, fuga FROM sakura WHERE (fuga = ?) AND (zun = ?)) stmt1 WHERE (bar = ?) AND (john = ?)) stmt2 WHERE (baz = ?) ORDER BY yo'); $t->is(implode(',', $stmt3->bind()), 'piyo,doko,baz,man,bar'); } while (false); do { $stmt = $builder->new_select(); $stmt->add_select('id'); $stmt->add_where('foo', 'bar'); $stmt->add_from($stmt, 'itself'); $t->is($stmt->as_sql(), 'SELECT id FROM (SELECT id FROM WHERE (foo = ?)) itself WHERE (foo = ?)'); $t->is(implode(',', $stmt->bind()), 'bar,bar'); } while (false); }
function order_by_driver_mysql($t) { $builder = new SQLMaker('mysql', array('quote_char' => '', 'new_line' => ' ')); do { list($sql, $binds) = $builder->select('foo', array('*'), null, array('order_by' => 'yo')); $t->is($sql, 'SELECT * FROM foo ORDER BY yo'); $t->is(implode(',', $binds), ''); } while (false); do { list($sql, $binds) = $builder->select('foo', array('*'), array(), array('order_by' => array('yo', 'ya'))); $t->is($sql, 'SELECT * FROM foo ORDER BY yo, ya'); $t->is(implode(',', $binds), ''); } while (false); do { list($sql, $binds) = $builder->select('foo', array('*'), array(), array('order_by' => array('yo' => 'desc', 'ya' => 'asc'))); $t->is($sql, 'SELECT * FROM foo ORDER BY yo DESC, ya ASC'); $t->is(implode(',', $binds), ''); } while (false); }