Como faço para combinar três campos de duas mesas para atualizar as mesmas tabelas em caso de partida

StackOverflow https://stackoverflow.com/questions/1755754

Pergunta

Dadas duas tabelas A e B em um banco de dados MySQL, como se pode atualizar um campo em uma linha da Tabela A se e somente se certos campos na linha mencionada pela tabela A exatamente campos de correspondência em uma linha distinta da Tabela B. A As linhas na Tabela B devem ser usadas uma vez e apenas uma vez para cada comparação. Como tal, uma linha na Tabela B que possui campos correspondentes a uma linha na Tabela A não pode ser usada um ganho para corresponder a qualquer outra linha na Tabela A.

eu tentei

UPDATE
    Table A,
    Table B
SET 
    Table A.Status = 'MATCHED',
        Table B.Status = 'USED'
WHERE
    Table B.Status IS NULL
AND 
    Table A.Field1 = Table B.Field1
AND 
    Table A.Field2 = Table B.Field2

Infelizmente, isso não fornece meus resultados desejados, pois diferentes linhas da Tabela A tendem a ser combinadas com a mesma linha na Tabela B.

Por exemplo: Tabela A

ID  Date       Ref    Amount  Status 
1   2009-10-20 773    300000         
2   2009-10-20 773    10000   MATCHED
3   2009-10-20 773    150000         
4   2009-10-20 773    20000   MATCHED
5   2009-10-20 773    140000  MATCHED

Tabela b

 Ref Amount Date       ID
 870 50000  2009-11-01 1 
 871 50000  2009-11-01 2 
 871 80000  2009-11-01 3 
 871 20000  2009-11-01 4 
 871 20000  2009-11-01 5 
 871 20000  2009-11-01 6 
 872 300000 2009-11-01 7 

Para combinar usando a referência, quantidade e data.

Foi útil?

Solução

Poderia ser tão simples quanto adicionar exclusões à cláusula WHERE para evitar a reutilização?

AND Table A.Status <> 'MATCHED'
AND Table B.Status <> 'USED'

Isso funcionará se cada linha for atualizada por sua vez, mas não se for definida e transacional. Minhas desculpas por não testar isso; Não tenho mysql aqui para tentar isso.

Outras dicas

Adicione mais condições à sua cláusula WHERE para forçar uma correspondência de 1: 1 entre os registros em tablea e Tableb?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top