在IF条件下,Mysql依赖于嵌套的内部查询

时间:2013-06-13 10:53:28

标签: mysql

我需要计算分页的结果数量。

演示查询

select A.order_id, 
       IF(
          E.assign_date IS NOT NULL AND E.assign_date != '0000-00-00',  
          DATE_FORMAT(E.assign_date , '%d-%b-%y'),
          (select data from other tables with other conditions)
       ) AS assign_date, 
       .......
       where 
       .....
       and assign_date > 2013-08-01

我使用的计数查询

Select count(A.order_id) from order A, size B, production E ........... where ....... and assign_date > 2013-08-01

我需要补充一点,如果条件让我可以正确计算结果

更长的版本

我已经检查了SO上发布的问题,但无法找到答案。我正在制作一个我正在展示分页的页面。

对于分页我使用了计数,这是有效的。计数查询没有这个条件。

对于实际查询,我希望我可以在这里发布我的整个查询,但如果排序好,则超过200多行。

对于分页,我使用以下查询。

$strQuery = "SELECT COUNT(DISTINCT(A.order_id)) AS totalRecs FROM $tbls WHERE $whereClause $WhereExt";

$tbls$whereClause很长。

orders表格中,我有assing_on日期字段,表示已将某个订单分配给某个订单进行生产。我已经从数据创建了结果列表页面,并在PHP中添加了检查,如果assign_on date为空/ null。如果是,我正在运行另一个查询以获得估计的生产开始日期。

估计的生产开始日期获得计算和参数数量的日期

  1. Orders.estimated交货日期(发布订单时设置)
  2. mustReadyDate =估计日期 - 发货缓冲区(另一个表) - 供应商假期(另外3个表) - 供应商周末(另外2个表)
  3. 生产总需求量=订单总长度/每天标准编织率(另一张表)
  4. muststartdate = mustReadyDate - totalDaysRequired;
  5. 以上四点都在查询中,没有PHP工作涉及

    数据提取查询具有此条件,并且计数查询此时没有此条件。

    IF(
        E.assign_date IS NOT NULL AND E.assign_date != '$mysqlEmptyDate',  
        DATE_FORMAT(E.assign_date , '" . reporting_DateFormat . "'),
        ($mustLoomStartDateQry_fm)
    ) AS assign_date, 
    

    我需要在count查询的where子句中再添加一个条件来检查aasign_date > one week from today我是否只想知道如何在count部分添加这么长的查询,所以我只执行查询。

    **编辑**

    如果有人有兴趣查看完整查询http://pastebin.com/zqzbpEei,但请我提供此信息,仅为您提供见解......

1 个答案:

答案 0 :(得分:0)

如果您需要分页,请尝试这个.......

$Query="select * from table_name_here where colunm_name='content_which_you_find'";

例如

$Query="select * from android where type='Casual'";

如果您不需要这样的条件,请将其删除......

喜欢$Query="select * from android";

现在使用此

执行上述查询
$Result=mysql_query($Query);

现在使用此

选择总行数
$TotalRows=mysql_num_rows($Result);

$onepage=9;

将9以上更改为您希望在一个页面中显示记录的数量

现在粘贴以下代码以获取分页

$d=($page-1)*$onepage;
$SqlQuery="select * from android where type='Casual' order by id desc LIMIT $d, $onepage";
$ResultSql=mysql_query($SqlQuery) or die("error1?");

现在把循环打印到数据

while($row = mysql_fetch_array($ResultSql))
{
echo $row[1];
echo $row[2];
}

现在放在代码下面

 for($i=1;$i<=$np;$i++)
{
echo "<a href='currnt_page_name_here.php?page=$i'> $i </a>";
}

如果有任何错误告诉我,请立即尝试