compare and update fields

Συζητήσεις για τον Microsoft SQL Server

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 02 Ιούλ 2010 09:55

Καλημέρα παιδιά
μια ερώτηση
έχω δύο πίνακες με την ίδια δομή,
η μόνη διαφορά τους είναι σε κάποια data ,πχ :

table1
id name surname
1 test test1
2 test2 test3
3 test4 test5

table2
id name surname
1 test test1
2 test10 test11
3 test4 test5

αυτό που θέλω είναι να γίνει Update ο table1 με βάση τις αλλαγές του table2

όπως είναι οι πίνακες τώρα θα πρέπει ουσιαστικά να ενημερωθεί ο table1 με αλλαγές για id2 που αλλάζουν τα data
έχω φτιάξει stored procedure που κάνει αυτό το Update :

Κώδικας: Επιλογή όλων

ALTER  PROCEDURE [dbo].[updatetables] AS
UPDATE table1
SET
  name= table2.name, 
  surname=table2.surname
FROM
   table2
WHERE 
   table1.id= table2.id
το "κακό" με αυτό τον κώδικα είναι ότι σαρώνει όλες τις εγγραφές και κάνει update όλα τα πεδία
αλλά εγώ κρατάω και ένα ακόμα πεδίο με την ημερομηνία αλλαγής μιας εγγραφής ( δεν την έχω βάλει στη δομή των πινάκων τώρα ) οπότε αυτή θα ενημερώνεται όταν υπάρχει πραγματική αλλαγή σε κάποια εγγραφή
ενώ με αυτό τον τρόπο που έχω τη stored procedure θα μου περνάει την ημερομηνία αλλαγής σε όλες τις εγγραφές

άρα θα ήθελα αν κάποιος ξέρει να με βοηθήσει να τροποποιήσω την stored procedure για να κάνω update Μόνο τις εγγραφές που έχουν διαφορετικά data

ευχαριστώ

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

compare and update fields

Δημοσίευση από dva_dev » 02 Ιούλ 2010 11:54

Δοκίμασε να αλλάξεις τη συνθήκη σε κάτι τέτοιο

Κώδικας: Επιλογή όλων

WHERE table1.id= table2.id
AND &#40; &#40;table1.name<>table2.name&#41; OR &#40;table1.surname<>table2.surname&#41; &#41;

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 02 Ιούλ 2010 12:53

οκ μια χαρά
αν και τόσο εύκολο δεν πήγε το μυαλό μου εκεί
ευχαριστώ

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 02 Ιούλ 2010 13:32

βασικά να ρωτήσω κάτι σχετικά με το συγκεκριμένο θέμα
αυτός ο τρόπος ενημέρωσης είναι ο σωστός?

ή θα πρεπε να διαβάζω μια μια τις εγγραφές και στο τέλος να κάνω το Update?

απλά ρωτάω για να μη μου δημιουργηθεί κάποιο πρόβλημα με κάποια εγγραφή

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

compare and update fields

Δημοσίευση από dva_dev » 02 Ιούλ 2010 19:22

Η απάντηση δώθηκε για τη συγκεκριμένη ερώτηση. Αν είναι σωστή ή όχι εξαρτάται από το αν ρώτησες αυτό που θέλεις να κάνεις.

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 02 Ιούλ 2010 22:16

βασικά μου κάνει αυτό το script και τρέχει μια χαρά
απλά δεν ξέρω αν είναι ο σωστός τρόπος και μου δημιουργεί κάποιο πρόβλημα σε μελλοντικές εγγραφές

και φυσικά αν υπάρχει κάποιος εναλλακτικός τρόπος

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

compare and update fields

Δημοσίευση από dva_dev » 02 Ιούλ 2010 22:21

Είναι ένας από τους σωστούς τρόπους να κάνεις update.
Ενας άλλος είναι να περάσεις από τις εγγραφές μία μία.
Ενας άλλος είναι να περάσεις από τα πεδία ένα ένα.
Εξαρτάται από το τι θέλεις να κάνεις και πόσες είναι οι εγγραφές που θέλεις να κάνεις update.
Για πόσες χιλιάδες εγγραφές μιλάς;

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 03 Ιούλ 2010 22:26

λογικά θα είναι λίγες
γύρω στις 100
απλά δεν ξέρω αν είναι αξιόπιστος αυτός ο τρόπος
αν είναι να διαβάζω μια μια κάθε εγγραφή λογικά θα πρέπει να χρησιμοποιήσω κέρσορα έτσι?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

compare and update fields

Δημοσίευση από dva_dev » 03 Ιούλ 2010 22:33

Αν είναι να κάνεις το loop μέσα στην sp είναι και ο κέρσορας ένας τρόπος.
Αλλά τι είναι αυτό που φοβάσαι μήπως δεν είναι αξιόπιστο στο update statement? Μήπως κοπεί η σύνδεση και ενημερωθούν οι 10 από τις 100 εγγραφές;

txc
Δημοσιεύσεις: 626
Εγγραφή: 02 Δεκ 2003 23:08

compare and update fields

Δημοσίευση από txc » 03 Ιούλ 2010 22:54

Λογικά με rollback είμαι οκ στη stored procedure που έχω φτιάξει για το sql update
άρα δεν θα έχω πρόβλημα για το αν κοπεί η σύνδεση

απλά σαν διαδικασία και λογική δεν ξέρω αν είναι η πιο σωστή

Απάντηση

Επιστροφή στο “MS SQL Server”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες