Preciso verificar (a partir da mesma tabela) se existe uma associação entre dois eventos com base na data e hora.
Um conjunto de dados conterá a data/hora final de certos eventos e o outro conjunto de dados conterá a data/hora inicial para outros eventos.
Se o primeiro evento terminar antes do segundo, eu gostaria de ligá-los.
O que eu tenho até agora é:
SELECT name as name_A, date-time as end_DTS, id as id_A
FROM tableA WHERE criteria = 1
SELECT name as name_B, date-time as start_DTS, id as id_B
FROM tableA WHERE criteria = 2
Então eu juntei-me a eles:
SELECT name_A, name_B, id_A, id_B,
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B
Posso então, com base no meu campo validation_check, executar uma consulta UPDATE com o aninhado SELECT?
Você pode fazer isso de duas maneiras:
MySQL update join syntax:
UPDATE tableA a
INNER JOIN tableB b ON a.name_a = b.name_b
SET validation_check = if(start_dts > end_dts, 'VALID', '')
-- where clause can go here
Sintaxe ANSI SQL:
UPDATE tableA SET validation_check =
(SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check
FROM tableA
INNER JOIN tableB ON name_A = name_B
WHERE id_A = tableA.id_A)
Escolhe o que te parecer mais natural.
Se alguém está procurando atualizar dados de uma base de dados para outra, não importa qual a tabela que está buscando, deve haver alguns critérios para fazer isso.
Este é melhor e limpo para todos os níveis:
UPDATE dbname1.content targetTable
LEFT JOIN dbname2.someothertable sourceTable ON
targetTable.compare_field= sourceTable.compare_field
SET
targetTable.col1 = sourceTable.cola,
targetTable.col2 = sourceTable.colb,
targetTable.col3 = sourceTable.colc,
targetTable.col4 = sourceTable.cold
Traaa! Funciona muito bem!
Com o entendimento acima, você pode modificar os campos e "on" critérios para fazer o seu trabalho. Você também pode executar as verificações, depois puxar os dados para a(s) tabela(s) temporária(s) e depois executar a atualização usando a sintaxe acima substituindo os nomes da sua tabela e coluna.
Espero que funcione, se não me avisar. Vou escrever uma pergunta exacta para si.