繁体   English   中英

MySQL两个选择但完全不同

[英]MySQL two selects but totally different

好的,我必须按照相同的方式列出表格,但是其中一张列出所有销售商品的商店,另一张列出我们销售的商品。

认为它像Fruit和Veg完全不同。

我需要计算的是,如果有7个水果,并且我们需要8个列表,然后去获得一个随机的蔬菜,并以相同的结果显示出来。

这是我们的查询当前的样子。 您会注意到我们可以发送$ count,我们以8发送,但是我们可能希望增加到10,甚至达到4。

public function realcashoffers($state,$count)
{
    $this->state = $state;
    $this->number = $count;
    //print count($this->JSONselect("business_stores","*",NULL,NULL),1);
        print $this->JSONselect("approved_business, business_stores, Real_Cash_Offers"," *, group_concat(offer ORDER BY offer ASC SEPARATOR ',') as offers"," approved_business.id = business_stores.business_id AND  Real_Cash_Offers.business_id = approved_business.id  AND Real_Cash_Offers.storeid = business_stores.storeid AND business_stores.state = '{$this->state}'","GROUP BY id ORDER BY RAND(), approved_business.id DESC LIMIT {$this->number} ");
}

此-> JSONselect转到

//JSON select
    public function JSONselect($table,$options,$where,$orderby)
    {
        $options = empty($options) ? "*"   : $options;
        $where  =  empty($where)   ? "1=1" : $where;
        $orderby = empty($orderby) ? ""    : $orderby;

        $qry = "SELECT $options FROM $table WHERE $where $orderby ";
        //print $qry;
        $result = mysql_query($qry) or die(json_encode(array("error",mysql_error())));

        while(($row = mysql_fetch_assoc($result))){ $resultArray[] = $row; }

        //print json_encode($resultArray);

        return count($resultArray) < 1 ? print "[".json_encode(array("error"=>"sorry"))."]" : json_encode($resultArray);
    }

如果我理解正确,我认为您所寻找的就是与此类似的东西。

更新主函数以确定是否有足够的结果,如果没有,则调用辅助查询

public function realcashoffers($state,$count)
{
     $this->state = $state;
     $this->number = $count;         
     $result = $this->JSONselect("approved_business, business_stores, Real_Cash_Offers"," *, group_concat(offer ORDER BY offer ASC SEPARATOR ',') as offers"," approved_business.id = business_stores.business_id AND  Real_Cash_Offers.business_id = approved_business.id  AND Real_Cash_Offers.storeid = business_stores.storeid AND business_stores.state = '{$this->state}'","GROUP BY id ORDER BY RAND(), approved_business.id DESC LIMIT {$this->number} ");

     $remaining = count($result) - $count;

     if ($remaining) {
        $result = array_merge($result, $this->JSONselect(.. enter secondary call here using $remaining as the limit..);

     }

     $this->JSONprint($result);
}

更新JSONselect以返回结果,而不是同时负责打印结果

public function JSONselect($table,$options,$where,$orderby)
{
    $resultArray = array();
    $options = empty($options) ? "*"   : $options;
    $where  =  empty($where)   ? "1=1" : $where;
    $orderby = empty($orderby) ? ""    : $orderby;

    $qry = "SELECT $options FROM $table WHERE $where $orderby ";
    //print $qry;
    $result = mysql_query($qry) or die(json_encode(array("error",mysql_error())));

    while(($row = mysql_fetch_assoc($result))){ $resultArray[] = $row; }

    //print json_encode($resultArray);

    return $resultArray;
}

创建将打印返回结果的JSONprint

protected function JSONprint($resultArray) {
    return count($resultArray) < 1 ? print "[".json_encode(array("error"=>"sorry"))."]" : json_encode($resultArray);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM