Pessoal, pequena dúvida, para eu dar um select (inner join) entre duas tabelas. Elas devem estar relacionados entre si ?
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 !