Πρέπει να ελέγξω (από τον ίδιο πίνακα) αν υπάρχει συσχέτιση μεταξύ δύο γεγονότων με βάση την ημερομηνία-ώρα.
Το ένα σύνολο δεδομένων θα περιέχει την ώρα λήξης ορισμένων γεγονότων και το άλλο σύνολο δεδομένων θα περιέχει την ώρα έναρξης άλλων γεγονότων.
Εάν το πρώτο γεγονός ολοκληρώνεται πριν από το δεύτερο γεγονός, τότε θα ήθελα να τα συνδέσω μεταξύ τους.
Αυτό που έχω μέχρι στιγμής είναι:
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
Μετά τους ενώνω:
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
Μπορώ στη συνέχεια, με βάση το πεδίο validation_check, να εκτελέσω ένα ερώτημα UPDATE με το ένθετο SELECT;
Μπορείτε να το κάνετε αυτό με δύο τρόπους:
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:
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)
Επιλέξτε όποια σας φαίνεται πιο φυσική.
UPDATE
`table1` AS `dest`,
(
SELECT
*
FROM
`table2`
WHERE
`id` = x
) AS `src`
SET
`dest`.`col1` = `src`.`col1`
WHERE
`dest`.`id` = x
;
Ελπίζω αυτό να δουλέψει για εσάς.
Εάν κάποιος επιδιώκει να ενημερώσει δεδομένα από μια βάση δεδομένων σε μια άλλη, ανεξάρτητα από τον πίνακα στον οποίο στοχεύει, πρέπει να υπάρχουν κάποια κριτήρια για να το κάνει.
Αυτό είναι καλύτερο και καθαρό για όλα τα επίπεδα:
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! Δουλεύει τέλεια!
Με την παραπάνω κατανόηση, μπορείτε να τροποποιήσετε τα κριτήρια set fields και "on" για να κάνετε τη δουλειά σας. Μπορείτε επίσης να εκτελέσετε τους ελέγχους, στη συνέχεια να τραβήξετε τα δεδομένα στον προσωρινό πίνακα (ή στους προσωρινούς πίνακες) και στη συνέχεια να εκτελέσετε την ενημέρωση χρησιμοποιώντας την παραπάνω σύνταξη αντικαθιστώντας τα ονόματα των πινάκων και των στηλών σας.
Ελπίζω να δουλέψει, αν όχι, ενημερώστε με. Θα γράψω ένα ακριβές ερώτημα για εσάς.