|
@@ 361-383 (lines=23) @@
|
| 358 |
|
); |
| 359 |
|
} |
| 360 |
|
|
| 361 |
|
public function testInnerJoin() { |
| 362 |
|
$query = new SQLQuery(); |
| 363 |
|
$query->setFrom('MyTable'); |
| 364 |
|
$query->addInnerJoin('MyOtherTable', 'MyOtherTable.ID = 2'); |
| 365 |
|
$query->addLeftJoin('MyLastTable', 'MyOtherTable.ID = MyLastTable.ID'); |
| 366 |
|
|
| 367 |
|
$this->assertSQLEquals('SELECT * FROM MyTable '. |
| 368 |
|
'INNER JOIN "MyOtherTable" ON MyOtherTable.ID = 2 '. |
| 369 |
|
'LEFT JOIN "MyLastTable" ON MyOtherTable.ID = MyLastTable.ID', |
| 370 |
|
$query->sql($parameters) |
| 371 |
|
); |
| 372 |
|
|
| 373 |
|
$query = new SQLQuery(); |
| 374 |
|
$query->setFrom('MyTable'); |
| 375 |
|
$query->addInnerJoin('MyOtherTable', 'MyOtherTable.ID = 2', 'table1'); |
| 376 |
|
$query->addLeftJoin('MyLastTable', 'MyOtherTable.ID = MyLastTable.ID', 'table2'); |
| 377 |
|
|
| 378 |
|
$this->assertSQLEquals('SELECT * FROM MyTable '. |
| 379 |
|
'INNER JOIN "MyOtherTable" AS "table1" ON MyOtherTable.ID = 2 '. |
| 380 |
|
'LEFT JOIN "MyLastTable" AS "table2" ON MyOtherTable.ID = MyLastTable.ID', |
| 381 |
|
$query->sql($parameters) |
| 382 |
|
); |
| 383 |
|
} |
| 384 |
|
|
| 385 |
|
public function testJoinSubSelect() { |
| 386 |
|
|
|
@@ 385-415 (lines=31) @@
|
| 382 |
|
); |
| 383 |
|
} |
| 384 |
|
|
| 385 |
|
public function testJoinSubSelect() { |
| 386 |
|
|
| 387 |
|
// Test sub-select works |
| 388 |
|
$query = new SQLQuery(); |
| 389 |
|
$query->setFrom('"MyTable"'); |
| 390 |
|
$query->addInnerJoin('(SELECT * FROM "MyOtherTable")', |
| 391 |
|
'"Mot"."MyTableID" = "MyTable"."ID"', 'Mot'); |
| 392 |
|
$query->addLeftJoin('(SELECT "MyLastTable"."MyOtherTableID", COUNT(1) as "MyLastTableCount" ' |
| 393 |
|
. 'FROM "MyLastTable" GROUP BY "MyOtherTableID")', |
| 394 |
|
'"Mlt"."MyOtherTableID" = "Mot"."ID"', 'Mlt'); |
| 395 |
|
$query->setOrderBy('COALESCE("Mlt"."MyLastTableCount", 0) DESC'); |
| 396 |
|
|
| 397 |
|
$this->assertSQLEquals('SELECT *, COALESCE("Mlt"."MyLastTableCount", 0) AS "_SortColumn0" FROM "MyTable" '. |
| 398 |
|
'INNER JOIN (SELECT * FROM "MyOtherTable") AS "Mot" ON "Mot"."MyTableID" = "MyTable"."ID" ' . |
| 399 |
|
'LEFT JOIN (SELECT "MyLastTable"."MyOtherTableID", COUNT(1) as "MyLastTableCount" FROM "MyLastTable" ' |
| 400 |
|
. 'GROUP BY "MyOtherTableID") AS "Mlt" ON "Mlt"."MyOtherTableID" = "Mot"."ID" ' . |
| 401 |
|
'ORDER BY "_SortColumn0" DESC', |
| 402 |
|
$query->sql($parameters) |
| 403 |
|
); |
| 404 |
|
|
| 405 |
|
// Test that table names do not get mistakenly identified as sub-selects |
| 406 |
|
$query = new SQLQuery(); |
| 407 |
|
$query->setFrom('"MyTable"'); |
| 408 |
|
$query->addInnerJoin('NewsArticleSelected', '"News"."MyTableID" = "MyTable"."ID"', 'News'); |
| 409 |
|
$this->assertSQLEquals( |
| 410 |
|
'SELECT * FROM "MyTable" INNER JOIN "NewsArticleSelected" AS "News" ON '. |
| 411 |
|
'"News"."MyTableID" = "MyTable"."ID"', |
| 412 |
|
$query->sql() |
| 413 |
|
); |
| 414 |
|
|
| 415 |
|
} |
| 416 |
|
|
| 417 |
|
public function testSetWhereAny() { |
| 418 |
|
$query = new SQLQuery(); |