Ik moet (vanuit dezelfde tabel) controleren of er een verband is tussen twee gebeurtenissen op basis van datum-tijd.
Eén set gegevens bevat de einddatum van bepaalde gebeurtenissen en de andere set gegevens bevat de begindatum van andere gebeurtenissen.
Als de eerste gebeurtenis eerder eindigt dan de tweede, dan wil ik ze aan elkaar koppelen.
Wat ik tot nu toe heb is:
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
Dan voeg ik me bij hen:
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
Kan ik dan, op basis van mijn validation_check veld, een UPDATE query uitvoeren met de SELECT genest?
Je kunt dit op twee manieren doen:
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
ANSI SQL syntaxis:
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)
Kies degene die voor jou het meest natuurlijk lijkt.
Als iemand gegevens wil bijwerken van de ene database naar de andere, ongeacht de tabel waarop hij zich richt, moet er een criterium zijn om dat te doen.
Deze is beter en schoon voor alle niveaus:
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! Het werkt geweldig!
Met het bovenstaande begrip, kun je de set fields en "on" criteria aanpassen om je werk te doen. U kunt ook de controles uitvoeren, dan de gegevens in de tijdelijke tabel(len) trekken en dan de update uitvoeren met de bovenstaande syntaxis en uw tabel- en kolomnamen vervangen.
Hopelijk werkt het, zo niet laat het me weten. Ik zal een exacte query voor je schrijven.