Jump to content
mnunesd12

Dúvida com Join

Recommended Posts

Ola Pessoal, 

Recentemente comecei a estudar banco de dados por conta própria, para isso estou utilizando o mysql e "brincando" com o banco de dados de uma locadora que vem de exemplo no mysql, chamado sikila.

Eu queria saber como eu faço uma query para selecionar os todos os clientes que já alugaram o mesmo filme em momentos diferentes.

 

Select 
		fm.film_id,
		fm.title
        cus.customer_id,
		concat( cus.first_name, " ", cus.last_name) as Nome
from
		film as fm
    inner join
		inventory as inv on fm.film_id = inv.film_id
	inner join
		rental as rt on inv.inventory_id = rt.inventory_id
	inner join
		customer as cus on rt.customer_id = cus.customer_id
	Where
		rt.customer_id = 49
	and
		rt.customer_id = 127

Nessa query eu sei que os customers números 49 e 127, já alugaram o mesmo filme, porém, não sei por qual motivo, a query não resulta em nada.

Caso necessitem de mais informações fiquem à vontade para solicitar.

Obrigado pela ajuda

 

Share this post


Link to post
Share on other sites

Dica , tente contar os distintos (DISTINCT) clientes que alugaram a mesma fita em datas diferentes.

Share this post


Link to post
Share on other sites
8 horas atrás, Motta disse:

Dica , tente contar os distintos (DISTINCT) clientes que alugaram a mesma fita em datas diferentes.

Pois é, eu esqueci de falar, mas eu já usei o distinct também e o resultado foi o mesmo, não retornou nada.

Share this post


Link to post
Share on other sites

Opa, foi mal a demora...

 Vamos lá. A query e aquela mesma que esta no post original, no caso eu sei que estes dois clientes (49 e 227) já alugaram o mesmo filme em momentos distintos, porém a query retorna em branco. 

Quanto à modelagem, eu to usando uma que já vem de exemplo no próprio mysql workbench. espero que seja o suficiente.sakila.thumb.png.c56700aa415fbf853855a88578dce86f.png

Share this post


Link to post
Share on other sites

Este sql seria  base 

 

select custumer_id,inventory_id
from   rental
group by custumer_id,inventory_id
having count(*) >= 2

par cliente/item alugados mais de uma vez 

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 Danado_
      como eu seleciono da seguinte forma: 
       
      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!)
       
      tenho isso:
       
      <select name="nome[]" multiple> <?php $mapa = mysqli_query($con, "SELECT * FROM cadastro'"); while($dados = mysqli_fetch_assoc($mapa)){ ?> <option><?php echo $dados['nome']; ?></option> <?php } ?> </select>
       
    • By lemanoel
      oi, sou novo por aqui! desculpe se a pergunta é muito simples.... tenho duas tabelas:
      TABELA: atendimento: cd_item data_atend nome_cliente TABELA: documento_clinico cd_doc cd_item data_doc  
      o tenho a relação 1 atendimento para muitos docs. Quero criar um código que diz o número do atendimento e a data do doc mais antigo (apenas 1).  todas as tentativas duplicam o nome do cliente
    • By luizfabianochaves
      buenas pessoal..
       
      estou com um problema em um comparativo entre duas tabelas.. uma tabela eu tenho o o resultado das metas e do mix de produtos vendidos na empresa.. calça, camisa, casacos.. etc..
      na outra tabela esta o resultado da venda desses produtos.. preciso de um comparativo que me dê o resultado do que foi vendido.. mas o que não foi vendido liste tambem.. quando comparo a coluna MIX_PRODUTO como igual ela traz o resultado da venda correta mas só o que o representante vendeu.. como está na imagem..
      quando comparo como diferente ele traz todo o mix.. mas ele lista a soma da venda para todo o mix no caso ali embaixo 110 peças e diminui a quantidade vendida... 
      o que preciso é que fique como na segunda imagem.. listando todo o mix, mas aparecendo somente a venda que tem na imagem 1... me fiz entender?
      SELECT  A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO ,SUM(A.QT_SALDO) as QT_REAL FROM IM_DEMANDA A INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE) AND (D.MIX_PRODUTO = A.MIX_PRODUTO) WHERE A.CD_CLIENTE = '379' AND A.CD_MARCA = '3' AND A.CD_PERIODO = '8' GROUP BY A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE ,D.MIX_PRODUTO
      SELECT  A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO ,SUM(A.QT_SALDO) as QT_REAL FROM IM_DEMANDA A INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE) AND (D.MIX_PRODUTO <> A.MIX_PRODUTO) WHERE A.CD_CLIENTE = '379' AND A.CD_MARCA = '3' AND A.CD_PERIODO = '8' GROUP BY A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE ,D.MIX_PRODUTO
       
    • By Jonas Ribeiro Nascimento
      Tabela ingredientes(tem preço) e tabela Bolos(vai a qtd de ingredientes)  
      Com join pego o que preciso de cada tabela dinamicamente e multiplico o valor do ingrediente pelo sua grama.
      Mais o erro é que em cada loop ele soma a linha de baixo com a linha de cima....AFF...
       
      Obrigado a todos desde já.
      <?php                                                $soma = 0;          $resultado5=mysqli_query($conectar, "SELECT * FROM bolos_recheados_para_venda ");          $linhas5=mysqli_num_rows($resultado5);                      while($linhas5 = mysqli_fetch_array($resultado5)){                      $idx                                       = $linhas5['id'];                       $nome_do_bolox                = $linhas5['nome'];                       $modelo_do_bolox             = $linhas5['modelo_do_bolo'];                              $tamanho_do_bolox          = $linhas5['tamanho_do_bolo'];                                                                                                                                                                                                $resultado6=mysqli_query($conectar, "SELECT                                                      ingredientes.nome_ingrediente,                                                      ingredientes.preco_ingrediente * bolos_recheados_ingredientes.quantidade AS soma                                                     FROM bolos_recheados_ingredientes INNER JOIN ingredientes ON  ingredientes.nome_ingrediente = bolos_recheados_ingredientes.ingredientes WHERE                                                                         bolos_recheados_ingredientes.nome_bolo = '$nome_do_bolox'");                                                     $linhas6=mysqli_num_rows($resultado6);                                                         while($linhas6 = mysqli_fetch_array($resultado6)){                                                              $soma += $linhas6['soma'];                                                         }                                             ?>  

    • By danipereira
      Dúvida bem básica:
      Tenho duas tabelas: produtos e reservas. Preciso listar os produtos que NÃO constam na reserva por um determinada período.
      Faço  com um innerJoin e um foreach de produtos com if($produto!=$reserva_id)   ou dois foreach sendo um com reservas e depois nos produtos != reservas naquele período?
      Não tou conseguindo fazer a listagem corretamente.
      -----PRODUTO--------------RESERVAS------------ produto_id reserva_id produto_nome produto_id produto_status data_reserva ------------------------------------------------ "SELECT imoveis.imv_id, imoveis_reservas.imv_id FROM imoveis INNER JOIN imoveis_reservas ON imoveis.imv_id =imoveis_reservas.imv_id"  
×

Important Information

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