Added subquery argument support to more types of queries.

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8565 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ucorina 2011-07-05 19:49:20 +00:00
parent 4b85afd9b3
commit d248d70773
11 changed files with 232 additions and 32 deletions

View file

@ -19,7 +19,7 @@
function testSelectUncorrelated1(){
$xml_file = $this->xmlPath . "select_uncorrelated1.xml";
$argsString = '$args->user_id = 4;
';
';
$expected = 'select "column_a" as "value_a"
, (select max("column_b") as "count"
from "xe_table_b" as "table_b"
@ -45,7 +45,7 @@
$this->_test($xml_file, $argsString, $expected);
}
function testFromUncorrelated(){
function testFromUncorrelated1(){
$xml_file = $this->xmlPath . "from_uncorrelated1.xml";
$argsString = '$args->user_id = 4;
$args->user_name = 7;
@ -58,17 +58,40 @@
group by "member_srl"
) as "documentcountbymember"';
$this->_test($xml_file, $argsString, $expected);
}
}
function testWhereUncorrelated(){
$xml_file = $this->xmlPath . "where_uncorrelated1.xml";
$argsString = '';
$expected = 'select * from
"xe_member" as "member"
where "regdate" = (select max("regdate") as "maxregdate"
from "xe_documents" as "documents")';
// function testFromUncorrelated2(){
// $xml_file = $this->xmlPath . "from_uncorrelated1.xml";
// $argsString = '$args->user_id = 4;
// $args->user_name = 7;
// ';
// $expected = 'select max("documentcountbymember"."count") as "maxcount"
// from (
// select "member_srl" as "member_srl"
// , count(*) as "count"
// from "xe_documents" as "documents"
// group by "member_srl"
// ) as "documentcountbymember"';
// $this->_test($xml_file, $argsString, $expected);
// }
function testFromUncorrelated2(){
$xml_file = $this->xmlPath . "from_uncorrelated2.xml";
$argsString = '$args->member_srl = 4;
$args->module_srl = 7;
';
$expected = 'select max("documentcountbymember"."count") as "maxcount"
from (
select "member_srl" as "member_srl"
, count(*) as "count"
from "xe_documents" as "documents"
where "module_srl" = 7
group by "member_srl"
) as "documentcountbymember"
where "member_srl" = 4
';
$this->_test($xml_file, $argsString, $expected);
}
}
function testSelectCorrelated1(){
$xml_file = $this->xmlPath . "select_correlated1.xml";
@ -83,6 +106,22 @@
$this->_test($xml_file, $argsString, $expected);
}
function testSelectCorrelated2(){
$xml_file = $this->xmlPath . "select_correlated2.xml";
$argsString = '$args->user_id = 7;
$args->module_srl = 17;
';
$expected = 'select *,
(select count(*) as "count"
from "xe_documents" as "documents"
where "documents"."user_id" = "member"."user_id"
and "module_srl" = 17
) as "totaldocumentcount"
from "xe_member" as "member"
where "user_id" = \'7\'';
$this->_test($xml_file, $argsString, $expected);
}
function testWhereCorrelated1(){
$xml_file = $this->xmlPath . "where_correlated1.xml";
$argsString = '';
@ -96,6 +135,22 @@
$this->_test($xml_file, $argsString, $expected);
}
function testWhereCorrelated2(){
$xml_file = $this->xmlPath . "where_correlated2.xml";
$argsString = '$args->module_srl = 12; $args->member_srl = 19;';
$expected = 'select *
from "xe_member" as "member"
where "member_srl" = 19
and "regdate" = (
select max("regdate") as "maxregdate"
from "xe_documents" as "documents"
where "documents"."user_id" = "member"."user_id"
and "module_srl" = 12
)
';
$this->_test($xml_file, $argsString, $expected);
}
function testFromCorrelated1(){
$xml_file = $this->xmlPath . "from_correlated1.xml";
$argsString = '';
@ -111,6 +166,26 @@
) as "a"
left join "xe_member" as "m" on "m"."member" = "a"."member_srl"';
$this->_test($xml_file, $argsString, $expected);
}
}
function testFromCorrelated2(){
$xml_file = $this->xmlPath . "from_correlated2.xml";
$argsString = '$args->module_srl = 12; $args->count = 20;';
$expected = 'select "m"."member_srl"
, "m"."nickname"
, "m"."regdate"
, "a"."count"
from (
select "member_srl" as "member_srl"
, count(*) as "count"
from "xe_documents" as "documents"
where "module_srl" = 12
group by "member_srl"
) as "a"
left join "xe_member" as "m" on "m"."member" = "a"."member_srl"
where "a"."count" >= 20
';
$this->_test($xml_file, $argsString, $expected);
}
}
?>