Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Κερσορας?loop?και πως?

Îåêßíçóå áðü ôï ìÝëïò lskostas. Τελευταία δημοσίευση από το μέλος cap στις 08-05-2007, 10:52. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-05-2007, 10:13 31581

    Κερσορας?loop?και πως?

    Kαλημερα.Kαλησπερα whatever!

    Θα ηθελα να κανω copy στον ιδιο πινακα τις 45 σειρες που με ενδιαφερουν (απο 10000)
    με την διαφορα οτι στις καινουριες 45 σειρες το primary key θελω να ειναι το ιδιο με το παλιο εκτος του οτι
    τα 2 πρωτα γραμματα να ειναι διαφορετικα.Το primary key ειναι data type varchar και θα παραμεινει varchar.

    Ουσιαστικα θα πρεπει να φτιαξω ενα loop που θα πιανει row-row και χρησιμοποιωντας 2 μεταβλητες ,μια για να
    βρει ποια  row θα αντιγραψει(να ικανοποιει μια συνθηκη where [pk] like 'ok%'(να αρχιζει το pk απο "οκ")
    και να φτιαξει ενα αντιγραφο αυτης της row με το pk να αρχιζει με "οζ"

    Με κερσορα γινεται αυτο?Δεν γνωριζω καμια αλλη τεχνικη

    THanks για την φαια ουσια που δαπανησατε,εστω και να διαβασετε το βασανο...


    :D
  •  08-05-2007, 10:27 31582 σε απάντηση της 31581

    Απ: Κερσορας?loop?και πως?

    Δε χρειάζεσαι κέρσορα, ένα insert σου φτάνει.

    INSERT INTO MyTable(pk, field1, field2, field3)
    SELECT
      'OZ' + SUBSTRING(pk, 3, LEN(pk)-2),
      field1, field2, field3
    FROM MyTable
    WHERE pk like 'OK%'


    Νατάσα Μανουσοπούλου
  •  08-05-2007, 10:40 31584 σε απάντηση της 31581

    Απ: Κερσορας?loop?και πως?

    Να προσθέσω κι εγώ ότι είναι πολύ κακή ιδέα να βάζεις λογική στο primary key. Γιατί, όπως είδες, τί γίνεται όταν τα στοιχεία που είναι κρυμμένα μέσα στο primary key αλλάξουν? Πως θα μπορέσεις να ταιριάξεις μετά τις παλιές εγγραφές με τις καινούριες? Αν αρχίσεις να συγκρίνεις subsctring δεν θα μπορείς να εκμεταλλευτείς τα indexes. Γενικά, τα primary keys δεν πρέπει να είναι μεταβαλλόμενα, και η προσθήκη λογικής προκαλεί σχεδόν πάντα και μεταβολλές.

    Γι αυτό το λόγο το Primary key είναι ένας αριθμός που δίνει το ίδιο το σύστημα ή ένα GUID. Οποιαδήποτε άλλη πληροφορία, π.χ. κατηγορία προϊόντος, ή κατάσταση παραγγελίας, ή πληρωμή δανείου μπαίνουν πάντα σε άλλες στήλες, ή ακόμα και άλλους, βοηθητικούς πίνακες. Ακόμα και αν το "κλειδί" σου έρχεται απέξω και περιέχει εξτρα πληροφορία (π.χ. αριθμός πρωτοκόλλου) καλύτερα είναι να προσθέσεις εσύ ένα νέο βοηθητικό primary key παρά να χρησιμοποιήσεις το "μεταβαλλόμενο".


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-05-2007, 10:52 31586 σε απάντηση της 31584

    Απ: Κερσορας?loop?και πως?

    Σωστό αυτό Παναγιώτη. Βεβαια, ενδέχεται (όπως συμβαίνει συχνά) να μην έχει ορίσει ο συνάδελφος το schema του πίνακα, και να καλείται να κάνει δουλειά πάνω σε κάτι το οποίο είναι έτοιμο και ήδη λειτουργει.

    Εγώ θα ήθελα να επισημάνω οτι ο τίτλος του θέματος δεν περιγράφει επακριβώς το πρόβλημα. Διαβάζοντας το πρόβλημα είδα κάτι τελείως διαφορετικό από αυτό που περίμενα να δω. Καλό θα ήταν οι τίτλοι μας να είναι σχετικοί με το θέμα που περιγράφουμε. Για παράδειγμα, ο τίτλος θα μπορούσε να είναι "Αντιγραφή rows από ένα πίνακα στον εαυτό του με αλλαγή του primary key" ή κάτι τέτοιο.

    Ο τίτλος, όπως έχει τώρα, περιγράφει όχι το πρόβλημα, αλλά μια πιθανή λύση που σκεφτήκαμε, η οποία όπως απεδείχθη δεν είναι η μόνη.

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems