Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vinicius015

Consulta, erro no WHERE

Recommended Posts

Pessoal, estou fazendo esta consulta...


$sql = "SELECT * FROM piscinasespelhos FULL OUTER JOIN relatoriofinal

ON piscinasespelhos.idp = relatoriofinal.idpiscinaespelho

WHERE relatoriofinal.dataehora = CURRENT_DATE()";


Porém precisaria no final puxar a query que é passadara pela url...


Como esta forma (//$sql = "SELECT idp, idcondominio, nomepiscinaespelho FROM piscinasespelhos WHERE idcondominio='$codigo'";) é como faço para que me mostre os resultados...


Como conseguiria mesclar ambas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, imagino que esteja desesperado para conseguir a solução, mas isto não justifica abrir vários posts. Quando conseguir a solução, por favor, poste a solução nos outros tópicos e marque como resolvido.

SELECT
    p.idp,
    p.idcondominio,
    p.nomepiscinaespelho
FROM piscinaespelhos AS p
LEFT JOIN relatoriofinal AS r
    ON r.idpiscinaespelho = p.idp
    AND r.dataehora = CURDATE()
WHERE r.idpiscinaespelho IS NULL

Coloquei um "apelido" (ALIAS) na tabela, para não ter de escrever novamente todo o nome, e sim, só o `p`

 

Note que também coloquei um "apelido" na tabela relatoriofinal, e quando referenciei a tabela piscinaespelho só utilizei o `p`

 

No LEFT JOIN cruzei o ID da piscina, se existir na tabela relatoriofinal, terei acesso ás informações desta tabela, caso contrário, os campos serão NULL. Note que também cruzei o campo `r`.`dataehora` com a função CURDATE() que retorna a data de hoje do MySQL, com isso, só serão exibidas as informações do relatorio final somente se:

  1. Algum registro tiver o campo `r`.`idpiscinaespelho` igual ao campo `p`.`idp` de qualquer registro da tabela piscinaespelho;
  2. Além do critério 1, o campo `r`.`dataehora` deve ser igual a CURDATE().

Se nenhuma destas condições for atendida, as informações da tabela `r` serão todas NULL, mas se encontrar, serão exibidas as informações normalmente.

 

E por fim, na cláusula WHERE, especifiquei que quero somente o que `r`.`idpiscinaespelho` for NULL. Esta parte é confusa, porque o objetivo do relacionamento é encontrar as informações na tabela `r`, por que eu filtro o que não for encontrado? Porque eu preciso exibir o que não tem relacionamento, concorda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.