Pessoal, pequena dúvida, para eu dar um select (inner join) entre duas tabelas. Elas devem estar relacionados entre si ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Pessoal, pequena dúvida, para eu dar um select (inner join) entre duas tabelas. Elas devem estar relacionados entre si ?
Olá Marcos, sim esse seria o cenário "mais correto" vamos dizer assim.
Que você tenha uma chave primária(Primary Key) na tabela A e uma Chave estrangeira(Foreign Key ) na tabela B que represente a sua Chave primária da tabela A, assim resultando em uma relação ou relacionamento.
Porém, quando queremos fazer um JOIN(ou INNER JOIN) entre colunas de diferentes tabelas, basta que o a nossa cláusula ON seja atendida. Ou seja, se na coluna id da minha tabela A eu tenho algum valor que corresponda a minha coluna id da minha tabela B , o JOIN irá funcionar.
Exemplo:
SELECT
a.id
FROM
tabela A
JOIN tabela B
ON A.id = B.id
Espero ter ajudado,
abraços !
Entendi, mas no meu caso e o seguinte,estou com dificuldade de entender o seguinte : Eu tenho que montar um DER, de uma agencia bancária, onde o Cliente, tem um painel de operações, Tipo de operação (Saque, depósito, transferência), data e valor de de cada operação, exemplo : Saque = 80 R$. E eu preciso filtrar em um select todas essas informações, isto é, do cliente em um período de tempo, quantas operações, e os valores. Exemplo : do dia 10/04/17 até 20/04/17, o que ele fez. Como eu poderia filtrar por cliente ? várias operações dele ?
Para dar uma resposta mais significativa para sua estrutura em particular você precisaria fornecer como é o modelo. Qual a estrutura das tabelas envolvidas, ai conseguimos lhe mostrar como seria a query.
Abraço.
Em relação as tabelas, como você comentou que o DER é de uma agência bancária, eu imaginei o seguinte
tabela CLIENTES
cli_id - cli_nome - cli_CPF, cli_data_cadastro, e demais campos de acordo com sua necesssidades.
tabela CONTAS (O cliente pode ter 1 ou mais contas)
con_id, con_cli_id, con_numero_conta, outros campos....
tabela CARTOES (Uma conta pode ter mais de 1 cartão, ex: titular, adicional. Para o seu exemplo ela não seria necessária)
car_id, car_con_id, car_numero, outros campos....
tabela MOVIMENTACAO (para cada lançamento)
mov_id, mov_con_id, mov_data, mov_tipo (saque, transferência, etc...), mov_valor.
Com base no exemplo acima, para puxar os saques do cliente, teria que vincular clientes, contas, e movimentacao. Ficaria algo assim:
select m.mov_data, m.mov_valor from movimentacao as m inner join contas as c on m.mov_con_id = c.con_id inner join clientes as cl on cl.cli_id = c.con_cli_id WHERE cl.cli_id = CODIGO_DO_CLIENTE AND m.mov_data BETWEEN DATA_INICIAL and DATA_FINAL
Daniel Bins, é bem assim, porém estou com dificuldade em fazer o vínculo entre estas tabelas !