+ Responder ao Tópico



  1. #1
    diversaorj
    Visitante

    Padrão Consulta em 4 tabelas em uma única query

    Olá, esta ocorrendo um erro no meu SQL. Preciso colocar em uma única query uma consulta de 4 tabelas.

    Minhas Tabelas para esta consulta e seus campos:

    Tabela: anuncio - Campos: codigo, subcodigo, sequencia, url, visualizacao, categoria1, categoria2, status, plano, extra
    Tabela: cidade - Campos: codigo, nomecidade
    Tabela: estado - Campos: codigo, sigla
    Tabela: empresa - Campos: codigo, subcodigo, sequencia, codigocidade, codigoestado

    Bom, a consulta deve mostrar os campos:
    - url da tabela anuncio
    - nomecidade da tabela cidade
    - sigla da tabela estado

    Existe outros campos envolvidos, mas preferi simplificar para facilitar a leitura.

    Sendo que:
    - o codigo, subcodigo e sequencia da tabela anuncio deve ser igual da tabela empresa
    - o codigo da tabela cidade deve ser igual da tabela empresa campo codigocidade
    - o codigo da tabela estado deve ser igual da tabela empresa campo codigoestado

    O where deve mostrar:
    - somente o parametro igual aos dados dos campos categoria1 ou categoria2 da tabela anuncio
    - e status igual a 1
    - e visualizacao menor que (plano + extra)
    - e informar qual o registro atual e limitar o numero do registro na pagina.

    Abaixo o meu SQL no Banco de Dados MySql:

    select
    anuncio.codigo, anuncio.subcodigo, anuncio.sequencia, anuncio.url, anuncio.visualizacao,
    cidade.nomecidade,
    estado.sigla

    from anuncio

    inner join ((cidade inner join empresa on cidade.codigo = empresa.codigocidade)

    inner join estado on empresa.codigoestado = estado.codigo) on ((anuncio.codigo = empresa.codigo) and
    (anuncio.subcodigo = empresa.subcodigo) and
    (anuncio.sequencia = empresa.sequencia))

    where
    (anuncio.categoria1 = '$categoria' or anuncio.categoria2 = '$categoria') and
    anuncio.status = '1' and
    anuncio.visualizacao < (anuncio.plano + anuncio.extra)
    limit $registro, $limite


    Obrigado desde já pela ajuda.

  2. #2

    Padrão

    Kra vc vai ter q usar View, não sei fazer isso + em meu serviço existe uam situação dessa ai o kra crio uma VIEW e resolveu o problema