How to do a SQL query (MySQL) with average and several INNER tables?

1

I have an SQL statement with 5 tables. Notice that in it I make up a radius calculation.

I need to add a new table of ratings with:

cod_avaliacao int (11) customer_code cod_provider decimal_value evaluation (10,0)

Where the avaliacao_geral field wants to calculate the average according to the suppliers.

I've tried LEFT JOIN , RIGHT JOIN because there are vendors that do not have any evaluation and if you put INNER JOIN the result returns empty.

I also know that I have to use something like this in my SQL statement to return the average:

 SELECT 
       cod_avaliacao,
       cod_cliente,
       cod_fornecedor,
       AVG(avaliacao_geral)
    FROM
       avaliacao 
    GROUP BY cod_fornecedor

My SQL (without the evaluation table):

    SELECT
   fornecedores.cod_fornecedor,
   fornecedores.fantasia,
   fornecedores.CPF,
   fornecedores.identidade,
   fornecedores.email,
   fornecedores.cep,
   fornecedores.logradourro,
   fornecedores.complemento,
   fornecedores.cidade,
   fornecedores.estado,
   fornecedores.responsavel_contato,
   fornecedores.telefone_empresa,
   fornecedores.telefone_responsavel,
   fornecedores.celular,
   fornecedores.bairro,
   fornecedores.numero,
   fornecedores.latitude,
   fornecedores.longitude,
   cadastra_oferta.cod_oferta,
   cadastra_oferta.cod_fornecedor,
   cadastra_oferta.cod_categoria_com,
   cadastra_oferta.titulo_promocao,
   cadastra_oferta.descricao,
   cadastra_oferta.foto,
   cadastra_oferta.valor_sem_desconto,
   cadastra_oferta.valor_com_desconto,
   cadastra_oferta.desconto,
   cadastra_oferta.validade_oferta,
   cadastra_oferta.igredientes,
   cadastra_oferta.qtd_estoque,
   categoria_comida.cod_categoria_com,
   categoria_comida.nome,
   categoria_comida.data_cadastro,
   fornecedor_credito.cod_fornecedor_codigo,
   fornecedor_credito.cod_fornecedor,
   fornecedor_credito.qtd_credito,
   fornecedor_configura_frete.cod_configura_frete,
   fornecedor_configura_frete.cod_fornecedor,
   fornecedor_configura_frete.tem_delivery,
   fornecedor_configura_frete.custo_padrao,
   fornecedor_configura_frete.frete_gratis,
   fornecedor_configura_frete.valor_minimo_frete_gratis,
   fornecedor_configura_frete.tipos_pagamentos,
   fornecedor_configura_frete.prazo_entrega_min,
   fornecedor_configura_frete.prazo_entrega_max,
   fornecedor_configura_frete.agenda_comida,
   fornecedor_configura_frete.dayw_one,
   fornecedor_configura_frete.dayw_two,
   fornecedor_configura_frete.dayw_three,
   fornecedor_configura_frete.dayw_four,
   fornecedor_configura_frete.dayw_five,
   fornecedor_configura_frete.dayw_six,
   fornecedor_configura_frete.dayw_seven,
   fornecedor_configura_frete.hour_ini_one,
   fornecedor_configura_frete.hour_end_one,
   fornecedor_configura_frete.hour_ini_two,
   fornecedor_configura_frete.hour_end_two,
   fornecedor_configura_frete.hour_ini_three,
   fornecedor_configura_frete.hour_end_three,
   fornecedor_configura_frete.hour_ini_four,
   fornecedor_configura_frete.hour_end_four,
   fornecedor_configura_frete.hour_ini_five,
   fornecedor_configura_frete.hour_end_five,
   fornecedor_configura_frete.hour_ini_six,
   fornecedor_configura_frete.hour_end_six,
   fornecedor_configura_frete.hour_ini_seven,
   fornecedor_configura_frete.hour_end_seven,
   fornecedor_visual.cod_fornecedor_visual,
   fornecedor_visual.cod_fornecedor,
   fornecedor_visual.descricao_empresa,
   fornecedor_visual.facebook,
   fornecedor_visual.localizacao_mapa,
   fornecedor_visual.logomarca,
   fornecedor_visual.data_cadastro,
   fornecedor_visual.latitude,
   fornecedor_visual.longitude,
   (6371 * acos(
        cos( radians('$latitude') )
        * cos( radians( fornecedores.latitude ) )
        * cos( radians( fornecedores.longitude ) - radians('$longitude') )
        + sin( radians('$latitude') )
        * sin( radians( fornecedores.latitude ) ) 
        )
    ) AS distancia

FROM   
   fornecedores INNER JOIN cadastra_oferta ON fornecedores.cod_fornecedor = cadastra_oferta.cod_fornecedor
   INNER JOIN categoria_comida ON cadastra_oferta.cod_categoria_com = categoria_comida.cod_categoria_com
   INNER JOIN fornecedor_credito ON fornecedores.cod_fornecedor = fornecedor_credito.cod_fornecedor
   INNER JOIN fornecedor_configura_frete ON fornecedores.cod_fornecedor = fornecedor_configura_frete.cod_fornecedor
   INNER JOIN fornecedor_visual ON fornecedores.cod_fornecedor = fornecedor_visual.cod_fornecedor     
WHERE 
   (fornecedor_credito.qtd_credito >= '1') AND
   (cadastra_oferta.qtd_estoque >= '1')  AND
   (cadastra_oferta.validade_oferta >= NOW()) 
HAVING distancia <= '$raio'
ORDER BY
   cadastra_oferta.titulo_promocao ASC

Now my entire PHP to understand, is a JSON:

<?php


header('Content-type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');



/** CONFIG:START **/
$config["host"]         = "" ;      //host
$config["user"]         = "" ;      //Username SQL
$config["pass"]         = "" ;      //Password SQL
$config["dbase"]        = "" ;      //Database
$config["limit"]        = 500 ;         //limit row
$config["abs_url_images"]       = "http://" ;       //Absolute Images URL
$config["abs_url_images"]       = "http://v" ;      //Absolute Images URL
$config["abs_url_logo"]         = "/admin/vovos/_lib/file/img/app_logo" ;       //Absolute Videos URL
$config["abs_url_logo"]         = admin/vovos/_lib/file/img/app_logo" ;         //Absolute Audio URL
/** CONFIG:END **/


$data_atual = date("d-m-Y"); 



$rest_api = array();
function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = utf8ize($v);
        }
    } else if (is_string ($d)) {
        return utf8_encode($d);
    }
    return $d;
}

/** connect to mysql **/
$mysql = new mysqli($config["host"], $config["user"], $config["pass"], $config["dbase"]);
if (mysqli_connect_errno()){
    die(mysqli_connect_error());
}




if(!isset($_GET["json"])){

    $_GET["json"]= "route";

}

$latitude = $_GET['latitude'];
$longitude = $_GET['longitude'];
$raio = $_GET['raio'];



switch($_GET["json"]){
    case "promocao":
        $sql = "SELECT
   fornecedores.cod_fornecedor,
   fornecedores.fantasia,
   fornecedores.CPF,
   fornecedores.identidade,
   fornecedores.email,
   fornecedores.cep,
   fornecedores.logradourro,
   fornecedores.complemento,
   fornecedores.cidade,
   fornecedores.estado,
   fornecedores.responsavel_contato,
   fornecedores.telefone_empresa,
   fornecedores.telefone_responsavel,
   fornecedores.celular,
   fornecedores.bairro,
   fornecedores.numero,
   fornecedores.latitude,
   fornecedores.longitude,
   cadastra_oferta.cod_oferta,
   cadastra_oferta.cod_fornecedor,
   cadastra_oferta.cod_categoria_com,
   cadastra_oferta.titulo_promocao,
   cadastra_oferta.descricao,
   cadastra_oferta.foto,
   cadastra_oferta.valor_sem_desconto,
   cadastra_oferta.valor_com_desconto,
   cadastra_oferta.desconto,
   cadastra_oferta.validade_oferta,
   cadastra_oferta.igredientes,
   cadastra_oferta.qtd_estoque,
   categoria_comida.cod_categoria_com,
   categoria_comida.nome,
   categoria_comida.data_cadastro,
   fornecedor_credito.cod_fornecedor_codigo,
   fornecedor_credito.cod_fornecedor,
   fornecedor_credito.qtd_credito,
   fornecedor_configura_frete.cod_configura_frete,
   fornecedor_configura_frete.cod_fornecedor,
   fornecedor_configura_frete.tem_delivery,
   fornecedor_configura_frete.custo_padrao,
   fornecedor_configura_frete.frete_gratis,
   fornecedor_configura_frete.valor_minimo_frete_gratis,
   fornecedor_configura_frete.tipos_pagamentos,
   fornecedor_configura_frete.prazo_entrega_min,
   fornecedor_configura_frete.prazo_entrega_max,
   fornecedor_configura_frete.agenda_comida,
   fornecedor_configura_frete.dayw_one,
   fornecedor_configura_frete.dayw_two,
   fornecedor_configura_frete.dayw_three,
   fornecedor_configura_frete.dayw_four,
   fornecedor_configura_frete.dayw_five,
   fornecedor_configura_frete.dayw_six,
   fornecedor_configura_frete.dayw_seven,
   fornecedor_configura_frete.hour_ini_one,
   fornecedor_configura_frete.hour_end_one,
   fornecedor_configura_frete.hour_ini_two,
   fornecedor_configura_frete.hour_end_two,
   fornecedor_configura_frete.hour_ini_three,
   fornecedor_configura_frete.hour_end_three,
   fornecedor_configura_frete.hour_ini_four,
   fornecedor_configura_frete.hour_end_four,
   fornecedor_configura_frete.hour_ini_five,
   fornecedor_configura_frete.hour_end_five,
   fornecedor_configura_frete.hour_ini_six,
   fornecedor_configura_frete.hour_end_six,
   fornecedor_configura_frete.hour_ini_seven,
   fornecedor_configura_frete.hour_end_seven,
   fornecedor_visual.cod_fornecedor_visual,
   fornecedor_visual.cod_fornecedor,
   fornecedor_visual.descricao_empresa,
   fornecedor_visual.facebook,
   fornecedor_visual.localizacao_mapa,
   fornecedor_visual.logomarca,
   fornecedor_visual.data_cadastro,
   fornecedor_visual.latitude,
   fornecedor_visual.longitude,
   (6371 * acos(
        cos( radians('$latitude') )
        * cos( radians( fornecedores.latitude ) )
        * cos( radians( fornecedores.longitude ) - radians('$longitude') )
        + sin( radians('$latitude') )
        * sin( radians( fornecedores.latitude ) ) 
        )
    ) AS distancia

FROM   
   fornecedores INNER JOIN cadastra_oferta ON fornecedores.cod_fornecedor = cadastra_oferta.cod_fornecedor
   INNER JOIN categoria_comida ON cadastra_oferta.cod_categoria_com = categoria_comida.cod_categoria_com
   INNER JOIN fornecedor_credito ON fornecedores.cod_fornecedor = fornecedor_credito.cod_fornecedor
   INNER JOIN fornecedor_configura_frete ON fornecedores.cod_fornecedor = fornecedor_configura_frete.cod_fornecedor
   INNER JOIN fornecedor_visual ON fornecedores.cod_fornecedor = fornecedor_visual.cod_fornecedor     
WHERE 
   (fornecedor_credito.qtd_credito >= '1') AND
   (cadastra_oferta.qtd_estoque >= '1')  AND
   (cadastra_oferta.validade_oferta >= NOW()) 
HAVING distancia <= '$raio'
ORDER BY
   cadastra_oferta.titulo_promocao ASC";      

        //AND (fornecedores.gcm_key <> '')


            // ADICIONAR QUANTO TUDO FICAR PRONTO NA INSTRUÇÃO SQL NA CLÁUSULA WHERE
            //    AND
            //(cadastra_oferta.validade_oferta >= CURDATE())

        if($result = $mysql->query($sql)){
            $z=0;
            while ($data = $result->fetch_array()){
                $rest_api[$z]['cadastra_oferta_cod_oferta'] = $data['cod_oferta']; # id
                $abs_url_images = $config['abs_url_images'].'/';
                $abs_url_logo = $config['abs_url_logo'].'/';
                $abs_url_logo = $config['abs_url_logo'].'/';

                if((substr($data['foto'], 0, 7)=='http://r/admin/vovos/_lib/file/img/app_img')||(substr($data['foto'], 0, 8)=='http://v.br/admin/vovos/_lib/file/img/app_img')){
                    $abs_url_images = $abs_url_logo  = $abs_url_logo = '';

                }if((substr($data['logomarca'], 0, 7)=='http://vr/admin/vovos/_lib/file/img/app_logo')||(substr($data['logomarca'], 0, 8)=='http://.br/admin/vovos/_lib/file/img/app_logo')){
                    $abs_url_images = $abs_url_logo  = $abs_url_logo = '';

                }


                 /** TABELA FORNECEDORES **/     
                $rest_api[$z]['fornecedores_fantasia'] = $data['fantasia'];  
                $rest_api[$z]['fornecedores_CPF'] = $data['CPF']; 
                $rest_api[$z]['fornecedores_identidade'] = $data['identidade'];                 
                $rest_api[$z]['fornecedores_bairro'] = $data['bairro'];  
                $rest_api[$z]['fornecedores_celular'] = $data['celular']; 
                $rest_api[$z]['fornecedores_cep'] = $data['cep'];
                $rest_api[$z]['fornecedores_cidade'] = $data['cidade'];             
                $rest_api[$z]['fornecedores_cod_fornecedor'] = $data['cod_fornecedor']; 
                $rest_api[$z]['fornecedores_complemento'] = $data['complemento'];               
                $rest_api[$z]['fornecedores_data_hora_cadastro'] = $data['data_hora_cadastro'];
                $rest_api[$z]['fornecedores_email'] = $data['email']; 
                $rest_api[$z]['fornecedores_estado'] = $data['estado'];                 
                $rest_api[$z]['fornecedores_logradourro'] = $data['logradourro'];
                $rest_api[$z]['fornecedores_numero'] = $data['numero'];                
                $rest_api[$z]['fornecedores_responsavel_contato'] = $data['responsavel_contato'];
                $rest_api[$z]['fornecedores_telefone_empresa'] = $data['telefone_empresa'];
                $rest_api[$z]['fornecedores_telefone_responsavel'] = $data['telefone_responsavel'];  
                $rest_api[$z]['fornecedores_celular'] = $data['celular'];                  


                /** TABELA OFERTAS **/                                      
                $rest_api[$z]['cadastra_oferta_foto'] = $abs_url_images . $data['foto']; # images
                $rest_api[$z]['cadastra_oferta_titulo_promocao'] = $data['titulo_promocao']; # heading-1
                $rest_api[$z]['cadastra_oferta_cod_fornecedor'] = $data['cod_fornecedor']; # heading-2
                $rest_api[$z]['cadastra_oferta_cod_categoria'] = $data['cod_categoria']; # heading-2
                $rest_api[$z]['cadastra_oferta_descricao'] = $data['descricao']; # paragraph
                $rest_api[$z]['cadastra_oferta_igredientes'] = $data['igredientes']; # paragraph                
                $rest_api[$z]['cadastra_oferta_valor_sem_desconto'] = $data['valor_sem_desconto']; # text
                $rest_api[$z]['cadastra_oferta_valor_com_desconto'] = floatval($data['valor_com_desconto']); # text
                $rest_api[$z]['cadastra_oferta_desconto'] = floatval($data['desconto']); # text
                $rest_api[$z]['cadastra_oferta_validade_oferta'] = $data['validade_oferta']; # text
                $rest_api[$z]['cadastra_oferta_qtd_estoque'] = $data['qtd_estoque']; # text



                /**  CATEGORIA COMIDA .....  **/
                $rest_api[$z]['categoria_comida_cod_categoria_com'] = $data['cod_categoria_com'];  
                $rest_api[$z]['categoria_comida_data_cadastro'] = $data['data_cadastro']; 
                $rest_api[$z]['categoria_comida_nome'] = $data['nome'];               


                 /** FORNECEDOR CREDITO .....  **/
                $rest_api[$z]['fornecedor_credito_cod_fornecedor'] = $data['cod_fornecedor']; 
                $rest_api[$z]['fornecedor_credito_cod_fornecedor_codigo'] = $data['cod_fornecedor_codigo'];
                $rest_api[$z]['fornecedor_credito_qtd_credito'] = $data['qtd_credito'];       

                   /** TABELA FORNECEDOR_VISUAL **/

//                $rest_api[$z]['fornecedor_visual_cod_fornecedor'] = $data['cod_fornecedor']; 
                $rest_api[$z]['fornecedor_visual_cod_fornecedor_visual'] = $data['.cod_fornecedor_visual'];
                $rest_api[$z]['fornecedor_visual_data_cadastro'] = $data['data_cadastro'];
                $rest_api[$z]['fornecedor_visual_descricao_empresa'] = $data['descricao_empresa'];
                $rest_api[$z]['fornecedor_visual_facebook'] = $data['facebook'];
                $rest_api[$z]['fornecedor_visual_logomarca'] = $abs_url_logo . $data['logomarca']; # images 
                $rest_api[$z]['fornecedor_visual_latitude'] = $data['latitude'];
                $rest_api[$z]['fornecedor_visual_longitude'] = $data['longitude'];

                 /** TABELA FORNECEDOR_CONFIGURA_FRETE **/

                $rest_api[$z]['fornecedor_configura_frete_agenda_comida'] = $data['agenda_comida']; 
                $rest_api[$z]['fornecedor_configura_frete_cod_configura_frete'] = $data['cod_configura_frete'];
                $rest_api[$z]['fornecedor_configura_frete_cod_fornecedor'] = $data['cod_fornecedor'];
                $rest_api[$z]['fornecedor_configura_frete_custo_padrao'] = floatval($data['custo_padrao']);
                $rest_api[$z]['fornecedor_configura_frete_frete_gratis'] = $data['frete_gratis'];
                $rest_api[$z]['fornecedor_configura_frete_prazo_entrega_max'] = $data['prazo_entrega_max'];
                $rest_api[$z]['fornecedor_configura_frete_prazo_entrega_min'] = $data['prazo_entrega_min']; 
                $rest_api[$z]['fornecedor_configura_frete_tem_delivery'] = $data['tem_delivery']; 
                $rest_api[$z]['fornecedor_configura_frete_tipos_pagamentos'] = $data['tipos_pagamentos'];
                $rest_api[$z]['fornecedor_configura_frete_valor_minimo_frete_gratis'] = $data['valor_minimo_frete_gratis'];                
                $rest_api[$z]['fornecedor_configura_frete_dayw_one'] = $data['dayw_one'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_two'] = $data['dayw_two'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_three'] = $data['dayw_three'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_four'] = $data['dayw_four'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_five'] = $data['dayw_five'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_six'] = $data['dayw_six'];
                $rest_api[$z]['fornecedor_configura_frete_dayw_seven'] = $data['dayw_seven'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_one'] = $data['hour_ini_one'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_one'] = $data['hour_end_one'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_two'] = $data['hour_ini_two'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_two'] = $data['hour_end_two'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_three'] = $data['hour_ini_three'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_three'] = $data['hour_end_three'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_four'] = $data['hour_ini_four'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_four'] = $data['hour_end_four'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_five'] = $data['hour_ini_five'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_five'] = $data['hour_end_five'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_six'] = $data['hour_ini_six'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_six'] = $data['hour_end_six'];
                $rest_api[$z]['fornecedor_configura_frete_hour_ini_seven'] = $data['hour_ini_seven'];
                $rest_api[$z]['fornecedor_configura_frete_hour_end_seven'] = $data['hour_end_seven'];




                  /** TABELA AVALIAÇÕES **/
//              $rest_api[$z]['avaliacao_cod_avaliacao'] = $data['cod_avaliacao'];
//                $rest_api[$z]['avaliacao_cod_fornecedor'] = $data['cod_fornecedor'];
//                $rest_api[$z]['avaliacao_geral'] = floatval($data['avaliacao_geral']);




                $z++;
            }
            $result->close();
        } 

        break;

    case "route":
        $rest_api["routes"][0]["namespace"] = "promocao";
        $rest_api["routes"][0]["methods"][] = "GET";
        $rest_api["routes"][0]["_links"]["self"] = $_SERVER["PHP_SELF"]."?json=promocao";
        $rest_api["routes"][1]["namespace"] = "restaurantes";
        $rest_api["routes"][1]["methods"][] = "GET";
        $rest_api["routes"][1]["_links"]["self"] = $_SERVER["PHP_SELF"]."?json=restaurantes";
        break;
}


header('Content-type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
echo json_encode(utf8ize($rest_api));

?>
    
asked by anonymous 03.05.2017 / 22:01

1 answer

2

use a sub-select:

   (select avg(avaliacoes.avaliacao_geral) from avaliacoes where avaliacoes.cod_fornecedor = fornecedores.cod_fornecedor ) as media_avaliacao

Query complete:

SELECT
   (select avg(avaliacoes.avaliacao_geral) from avaliacoes where avaliacoes.cod_fornecedor = fornecedores.cod_fornecedor ) as media_avaliacao,
   fornecedores.cod_fornecedor,
   fornecedores.fantasia,
   fornecedores.CPF,
   fornecedores.identidade,
   fornecedores.email,
   fornecedores.cep,
   fornecedores.logradourro,
   fornecedores.complemento,
   fornecedores.cidade,
   fornecedores.estado,
   fornecedores.responsavel_contato,
   fornecedores.telefone_empresa,
   fornecedores.telefone_responsavel,
   fornecedores.celular,
   fornecedores.bairro,
   fornecedores.numero,
   fornecedores.latitude,
   fornecedores.longitude,
   cadastra_oferta.cod_oferta,
   cadastra_oferta.cod_fornecedor,
   cadastra_oferta.cod_categoria_com,
   cadastra_oferta.titulo_promocao,
   cadastra_oferta.descricao,
   cadastra_oferta.foto,
   cadastra_oferta.valor_sem_desconto,
   cadastra_oferta.valor_com_desconto,
   cadastra_oferta.desconto,
   cadastra_oferta.validade_oferta,
   cadastra_oferta.igredientes,
   cadastra_oferta.qtd_estoque,
   categoria_comida.cod_categoria_com,
   categoria_comida.nome,
   categoria_comida.data_cadastro,
   fornecedor_credito.cod_fornecedor_codigo,
   fornecedor_credito.cod_fornecedor,
   fornecedor_credito.qtd_credito,
   fornecedor_configura_frete.cod_configura_frete,
   fornecedor_configura_frete.cod_fornecedor,
   fornecedor_configura_frete.tem_delivery,
   fornecedor_configura_frete.custo_padrao,
   fornecedor_configura_frete.frete_gratis,
   fornecedor_configura_frete.valor_minimo_frete_gratis,
   fornecedor_configura_frete.tipos_pagamentos,
   fornecedor_configura_frete.prazo_entrega_min,
   fornecedor_configura_frete.prazo_entrega_max,
   fornecedor_configura_frete.agenda_comida,
   fornecedor_configura_frete.dayw_one,
   fornecedor_configura_frete.dayw_two,
   fornecedor_configura_frete.dayw_three,
   fornecedor_configura_frete.dayw_four,
   fornecedor_configura_frete.dayw_five,
   fornecedor_configura_frete.dayw_six,
   fornecedor_configura_frete.dayw_seven,
   fornecedor_configura_frete.hour_ini_one,
   fornecedor_configura_frete.hour_end_one,
   fornecedor_configura_frete.hour_ini_two,
   fornecedor_configura_frete.hour_end_two,
   fornecedor_configura_frete.hour_ini_three,
   fornecedor_configura_frete.hour_end_three,
   fornecedor_configura_frete.hour_ini_four,
   fornecedor_configura_frete.hour_end_four,
   fornecedor_configura_frete.hour_ini_five,
   fornecedor_configura_frete.hour_end_five,
   fornecedor_configura_frete.hour_ini_six,
   fornecedor_configura_frete.hour_end_six,
   fornecedor_configura_frete.hour_ini_seven,
   fornecedor_configura_frete.hour_end_seven,
   fornecedor_visual.cod_fornecedor_visual,
   fornecedor_visual.cod_fornecedor,
   fornecedor_visual.descricao_empresa,
   fornecedor_visual.facebook,
   fornecedor_visual.localizacao_mapa,
   fornecedor_visual.logomarca,
   fornecedor_visual.data_cadastro,
   fornecedor_visual.latitude,
   fornecedor_visual.longitude,
   (6371 * acos(
        cos( radians('$latitude') )
        * cos( radians( fornecedores.latitude ) )
        * cos( radians( fornecedores.longitude ) - radians('$longitude') )
        + sin( radians('$latitude') )
        * sin( radians( fornecedores.latitude ) ) 
        )
    ) AS distancia

FROM   
   fornecedores INNER JOIN cadastra_oferta ON fornecedores.cod_fornecedor = cadastra_oferta.cod_fornecedor
   INNER JOIN categoria_comida ON cadastra_oferta.cod_categoria_com = categoria_comida.cod_categoria_com
   INNER JOIN fornecedor_credito ON fornecedores.cod_fornecedor = fornecedor_credito.cod_fornecedor
   INNER JOIN fornecedor_configura_frete ON fornecedores.cod_fornecedor = fornecedor_configura_frete.cod_fornecedor
   INNER JOIN fornecedor_visual ON fornecedores.cod_fornecedor = fornecedor_visual.cod_fornecedor     
WHERE 
   (fornecedor_credito.qtd_credito >= '1') AND
   (cadastra_oferta.qtd_estoque >= '1')  AND
   (cadastra_oferta.validade_oferta >= NOW()) 
HAVING distancia <= '$raio'
ORDER BY
   cadastra_oferta.titulo_promocao ASC
    
03.05.2017 / 22:10