目的是从多个(总共9个)SELECT语句中计算行数,并在PHP页面上显示应用程序中的行计数。使用Oracle 11g db
不要在意这里选择任何内容 - 只需要行数。
我找不到使用Oracle计算行数和使用Select语句的好方法。
使用Multiple Selects和Oracle计算行数然后在PHP页面上显示的最佳方法是什么?
请提供示例
这就是我所拥有的,但这样做了9次
$query = oci_parse($conn, "SELECT ID"
. " FROM TABLE A"
. " WHERE (FieldX = 'N' AND FieldY = 'Y' AND FieldZ = 'Y')");
oci_execute($query) or die(oci_error($query));
oci_fetch_all($query, $array);
unset($array);
$numberofrows1 = oci_num_rows($query);
如何才能提高效率呢?
我尝试使用已编入索引的字段或SELECT ...
中的PK答案 0 :(得分:0)
此:
$query = oci_parse($conn, "SELECT COUNT( * ) the_count"
. " FROM TABLE a"
. " WHERE FieldX = 'N'"
. " AND FieldY = 'Y'"
. " AND FieldZ = 'Y'");
oci_execute($query) or die(oci_error($query));
oci_fetch_all($query, $array);
将返回一行,其中一列名为THE_COUNT,其中包含表A中与指定条件匹配的行数。
答案 1 :(得分:0)
如果您正在寻找FieldX,Y和Z的所有可能组合,您可以使用:
select pvt.*
from (select FieldX, FieldY, FieldZ from a)
PIVOT ( count(*) cnt
FOR ( FieldX, FieldY, FieldZ)
IN ( ('N', 'N', 'N') as N_N_N
, ('N', 'N', 'Y') as N_N_Y
, ('N', 'Y', 'N') as N_Y_N
, ('N', 'Y', 'Y') as N_Y_Y
, ('Y', 'N', 'N') as Y_N_N
, ('Y', 'N', 'Y') as Y_N_Y
, ('Y', 'Y', 'N') as Y_Y_N
, ('Y', 'Y', 'Y') as Y_Y_Y )
) pvt
您可能希望稍微重命名列,但它会返回一行,其中的行对应于FieldX,FieldY和FieldZ的每种可能组合的计数。
如果在子选择中包含其他列,您将获得按其他列分组的计数。