Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos, poderiam me ajudar?
Tenho no meu banco de dados uma tabela salao que tem N registros na tabela funcionários.
SELECT s.nome_salao, f.nome_funcionario FROM funcionario f NATURAL JOIN salao s WHERE s.email_salao IN (SELECT email_salao FROM salao WHERE codigo_estado = 2 AND cidade_salao = 'São Paulo' AND bairro_salao = 'Limoeiros') ORDER BY f.nome_funcionario;
Tenho uma query em que desejo selecionar o nome do salão ao qual o funcionário pertence. Porém quero fazer essa pesquisa para todos os salões que estejam em determinada localidade.
A subquery retorna dois salões, e para cada salão tenho vários funcionários.
Então quero retornar somente o nome do salão ao qual cada um dos funcionários pertence.
Olá Motta! Consegui resolver, fiz assim:
SELECT s.nome_salao, f.nome_funcionario
FROM funcionario f
INNER JOIN salao s ON s.email_salao = f.email_salao
WHERE s.codigo_estado = 2 AND s.cidade_salao = 'São Paulo' AND s.bairro_salao = 'Limoeiros'
ORDER BY f.nome_funcionario;
Muito Obrigado!!!
Motta, estou com um outro probleminha, poderia ajudar?
Preciso selecionar todos horários dos funcionários (horario_horariofuncionario) de acordo com a filtragem de serviço, data e dia da semana.
Estou conseguindo fazer esse select normalmente, porém como são vários horários (horario_horariofuncionario) está sendo gerado um novo resultado para cada novo horário encontrado...
E nesses resultados, claro, o único atríbuto que os diferencia é o horario_horariofuncionario o resto dos atríbutos são todos iguais.
Então o que eu gostaria é que todos os horario_horariofuncionario fossem retornados em APENAS UM RESULTADO juntamente com o restante dos atríbutos em vez de retornar um novo resultado para cada horario_horariofuncionario...
SELECT hf.horario_horariofuncionario,
hf.codigo_horariofuncionario,
s.nome_servico,
ss.tempo_servicosalao,
ss.preco_servicosalao,
hf.data_horariofuncionario,
ds.nome_diasemana,
f.nome_funcionario,
f.apelido_funcionario,
f.foto_funcionario FROM servicosalao ss
INNER JOIN servico s
INNER JOIN diasemana ds
INNER JOIN horariofuncionario hf
INNER JOIN funcionario f
INNER JOIN servicofuncionario sf
ON hf.codigo_funcionario = f.codigo_funcionario
WHERE sf.codigo_servicosalao = :servico
AND hf.data_horariofuncionario = :data
AND ds.nome_diasemana = :diaDaSemana
AND hf.codigo_statushorariofuncionario = 1;
A cláusula ON especifica o relacionamento entre as tabelas.
Todos os INNER JOIN precisam ter a cláusula ON, assim como você fez no exemplo abaixo.
>
Olá Motta! Consegui resolver, fiz assim:
SELECT s.nome_salao, f.nome_funcionario
FROM funcionario f
INNER JOIN salao s ON s.email_salao = f.email_salao
WHERE s.codigo_estado = 2 AND s.cidade_salao = 'São Paulo' AND s.bairro_salao = 'Limoeiros'
ORDER BY f.nome_funcionario;
Muito Obrigado!!!
Vi este post antes deste.
Ajude a gente
Idente a sql
Publique as estruturas da tabela