Salve galera, boa tarde a todos.
estou tendo um problema que ainda nao consegui enxergar... faço uma consulta mysql que funciona normalmente no proprio ambiente(mysql) mas ao solicitar a exibição do campo via php gera nao exibe e me tras um alerta.
****codigo php
function monta_avaliacao($cpf){
$query = mysqli_query($_SESSION["conector"],"SELECT c.*, a. cliente AS clientes FROM clientes AS c INNER JOIN avaliacoes AS a ON c.id = a.cliente WHERE c.cpf='$cpf'");
$dados = mysqli_fetch_assoc($query);
print $dados['c.cpf'];
}
*****sainda no html
Notice: Undefined index: c.cpf in C:\xampp\htdocs\acus\inclusoes\funcoes.php on line 29 Notice: Undefined index: a.pe in C:\xampp\htdocs\acus\inclusoes\funcoes.php on line 30
tenho um arquivo com as funções, e apenas mando os parametros.
Primeiro a situação porque é difícil de explicar:
Preciso realizar uma query em duas tabelas uma de pergunta (tabela_A) outra de resposta (tabela_B) usando o operador LIKE
Ambas possuem uma coluna para o conteúdo, a tabela_A possui também uma coluna para título.
A tabela_b é possui uma coluna para se relacionar com a tabela_A.
Então digamos que na tabela_A tenho a seguinte questão:
tabela_A
Título: João foi ao mercado?
Conteúdo (pergunta): Alguém sabe se ele comprou arroz?
tabela_B
Conteúdo (resposta): Eu vi que joão comprou feijão.
A consulta então seria pela palavra chave joão que poderia está presente nas 2 tabelas e em 3 colunas.
Tentei da seguinte forma montar a query:
SELECT
tabela_A.id,
tabela_A.titulo,
tabela_A.pergunta,
tabela_B.relacao,
tabela_B.resposta
FROM
tabela_A
INNER JOIN
tabela_B
ON
tabela_A.id = tabela_B.relacao
WHERE
tabela_B.resposta LIKE '%joão%'
OR (
tabela_A.titulo LIKE '%joão%'
OR
tabela_A.pergunta LIKE '%joão%'
)
Os problemas são se eu passar o comando ON para relacionar a resposta com a pergunta:
A query não retorna se não houver dados na tabela_B.
A query só retorna resultado se for buscado dados pela coluna resposta (mesmo existindo a palavra chave nas colunas citadas da tabela_A).
A questão é:
Como eu realizaria essa consulta?
Se a palavra chave for encontrado na coluna titulo, pergunta ou resposta, de forma a que eu irei listar a coluna_A.
Exemplo:
Pesquisou por Maria, no título não tem, na pegunta não tem, na resposta tem.
Pesquisou por Luiz, no título tem, na pegunta não tem, na resposta não tem.
Ou seja em qualquer um dos campos de ambas colunas que houver a chave de consulta deve retornar dados da coluna_A, mesmo que seja uma resposta na coluna_B.
A forma que estou procedendo mesmo dando o resultado esperado não acho adequado acredito que uma query bastaria.
Consultar tabela_A pelos campos tilulo e pergunta.
Consultar tabela_B pelo campo resposta.
Usar a função no PHP array_merge para unir ambos resultados em um único array.
Remover os índices duplicados do array unificado.
Boa tarde, peço ajuda dos membros desse fórum pois confesso estar completamente perdido.
Tomando como base o diagrama (em anexo), preciso de uma query que retorne as empresas, seus produtos e as categorias de cada produto, sendo que cada produto pode pertencer a uma ou mais categorias.
select
tbl_produtos.Empresa,
tbl_empresas.Nome,
tbl_catprod.Categoria,
tbl_classproduto.Classe,
tbl_produtos.Id,
tbl_produtos.Produto
from tbl_produtos
inner join tbl_empresas on tbl_produtos.Empresa = tbl_empresas.Id
left join tbl_catprod on tbl_produtos.Id = tbl_catprod.Categoria
left join tbl_classproduto on tbl_catprod.Categoria = tbl_classproduto.Id;
Tentei a consulta mostrada acima mas o resultado não foi o que eu esperava.
Agradeço antecipadamente pela ajuda.
Na SQL abaixo, quando consulto as tabelas, os registros se repetem, apresentando mais do que realmente existem.
Alguém pode auxiliar no que está errado ou o que falta para que a select retorne apenas um registro para cada documento?
Esclareço que todas as tabelas tem um campo "documento", porém ele não é chave e no retorno trouxe todos os campos de todas as tabelas e não apenas as dá SQL:
select so01.documento,so01.digito,so01.nome,so01.regional,so01.situacao,so01.observacao,so01.n_spprev,so01.averbacao,
so02.endereco, so02.numero, so02.bairro,so02.cidade,so02.cep,so02.estado,so02.aniversario,
so03.rg, so03.cpf, so03.email,
so04.estado_civil, so04.agencia,so04.dg_agencia,so04.conta,so04.dg_conta,so04.banco,so04.ddd,so04.telefone,so04.nascimento,
so04.admissao,so04.demissao_seg,so04.admor,so04.ddd_cel,so04.celular
from so03
inner join so01 ON so01.documento= so03.documento
inner join so02 ON so02.documento= so03.documento
inner join so04 ON so04.documento=so03.documento
where so01.documento="68" and so01.digito="0"
tabela cadastro;
id 1 - fulano
id 2 - bertano id 3 - fulaninho
---------------------------------------
Observações:
estou usando um select multiple e dou um insert into na tabela a abaixo ficando assim:
----------------------------------------
tabela mesas
id 1 - fulano, bertano
-----------------------------------------
ok até ai!
AGORA QUE PRECISO DA AJUDA DE VOCÊS!
preciso fazer um inner, left ou righ para TRAZER APENAS O id 3 - fulaninho (no caso verificando as duas tabelas e selecionando apenas o que NAO foi selecionado!)