Jump to content
mnmn

SQL - problema ao relacionar atríbutos de duas tabelas com claúsula IN

Recommended Posts

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.

Share this post


Link to post
Share on other sites

Ajude a gente

 

Idente a sql

Publique as estruturas da tabela

Share this post


Link to post
Share on other sites

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!!!

Share this post


Link to post
Share on other sites

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;

Share this post


Link to post
Share on other sites

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.

Edited by lokaodomau

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ricardosites
      Warning: pg_query() [function.pg-query]: Query failed: ERRO: sintaxe de entrada é inválida para tipo time: "" LINE 13: usu_hr_entrada = '',^ in /var/ftp/pontodigital/usuario/condicao_add.php on line 49
       
       
      Estou com esse erro aqui no sistema de ponto e não sei como resolver, não manjo muito mais tenho acesso ao banco de dados, alguém pode me ajudar a resolver? Grato
       

    • By ARILSONDIASRAMALHO
      1) Crie um select que exibe o valor gasto por todos os CLIENTES cadastrados. Essa seleção deve exibir além do total gasto (por cliente), o nome e cpf do cliente.
      2) Crie um select que exibe quais são os dois CLIENTES que mais gastaram. Essa seleção deve exibir o total gasto (por cliente), o nome e o cpf do cliente.
      3) Crie um select que exibe quais são os três PRODUTOS com a maior quantidade PEDIDOS. Exiba o nome e o código do produto.
      4) Crie um select que exibe o nome do cliente que comprou a maior quantidade de ITENS de PEDIDO.
       
       
       
       

    • By wellfc12
      Olá boa noite sou novo neste fórum, estou procurando ajuda pois não sei com eu poderia fazer. Estou modelando um banco de dados e agora cheguei a um ponto que não sei como fazer. 
      Preciso criar uma tabela que registre a movime tacacao de pessoas que iram passar na entrada da empresa, porém quando eu crio o relacionamento desta nova tabela com tabela pessoa para garantir integridade de quem é a pessoa que está entrando ou saída da empresa eu consigo, mas eu preciso também registrar o usuário (porteiro) que está registrando essa movimentação. A minha tabela de pessoas se relaciona com o usuário, pois uma pessoa cadastrada no sistema não necessariamente precisa ter um usuário, mas um usuário pra ter acesso ao sistema e necessário tar cadastrado na tabela pessoas. Quando vou relacionar na nova tabela que a pessoa quem passou é cod 2 exemplo eu preciso registrar qual é usuário quem registrou isso que poderia ser o cod 10 (cod o usuário, que do porteiro que tbm esta cadastrado no sistema) 
       
      Isso pode ser até uma coisa besta mas eu não sei como posso nesta ocasião. 
      Obrigado! 
       
      Anexo coloquei a imagem de uma modelagem que estou fazendo. 
       

    • By leo.silvagomes
      Boa noite!
      Tenho um programa que importa determinado arquivo CSV para um banco SQL afim de depois comparar os dados entre versões diferentes do mesmo arquivo, por exemplo uma versão do arquivo é do dia 01/09 e outra do dia 15/09, a finalidade do arquivo é comparar o que mudou
      Uso uma procedure para importar os dados do arquivo para um objeto JvMemoryData e outra para alimentar uma ADOProc que faz o insert no SQL com os dados desse JvMD
       
      Ocorre que o arquivo tem um padrão de 38 colunas e algo prox de 1 milhão de linhas! Como o cliente não usa toda a informação na planilha fiz uma opção de importação rápida que faz o input somente das colunas utilizadas, mas mesmo assim o processo de leitura e importação do arquivo demora até 50 min
       
      Como posso deixar isso mais rápido? 
    • By Leandro Volanick
      Boa tarde pessoal.
       
      Gostaria de uma ajuda em uma consulta sql, onde quero agrupar os todos produtos comprados pelo mesmo CPF, dentro de uma array. 
       
      Segue o que estou usando:
      $data=mysqli_query($mysqli, "SELECT xml.id, xml.xProd as produto, prod.id as iddoproduto, GROUP_CONCAT( prod.xProd ) FROM produtos AS prod LEFT JOIN xml as xml ON xml.xProd = prod.xProd GROUP BY xml.CPFdest"); while($info=mysqli_fetch_array($data)) echo '['.$info['iddoproduto'].'],'; No momento, o codigo está trazendo apenas 1 produto, quero que ele printe todos produtos que o CPFdest já comprou.
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.