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

 

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

Query Analyzer - SQL 2000

Îåêßíçóå áðü ôï ìÝëïò stefgrifon. Τελευταία δημοσίευση από το μέλος stefgrifon στις 21-01-2008, 22:54. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-01-2008, 11:13 39424

    Query Analyzer - SQL 2000

    Μήπως μπορεί κάποιος να μου γράψει αυτό το ερώτημα. Γιατί, πραγματικά δεν ξέρω. Θέλω να το γράψω στο Query Analyzer της SQL 2000

    update material
    βλέπει το δικό της GrGuideAA ΑΝ εχει μεσα αριθμό τότε τον ψάχνει να τον βρει στο πεδίο ΑΑ Και τότε αντιγραφή το Code από την εγγραφή που βρήκε, στο δικό της AltCode Αν στο GrGuideAA είναι κενό τότε αντιγράφει το δικό του Code στο AltCode το δικό του.

    Αν γραφώ κινέζικα πες τε μου το, για να το διορθώσω, έτσι ώστε να καταλάβετε τη θέλω να πω.

     Ευχαριστώ προκαταβολικά.

  •  21-01-2008, 11:23 39425 σε απάντηση της 39424

    Απ: Query Analyzer - SQL 2000

    Ναι, όντως είναι λίγο κινέζικα... Καλό θα είναι να δώσεις τα ονόματα των πινάκων που εμπλέκονται καθώς και τα πεδία που έχει ο καθένας όπως και τις σχέσεις που έχουν μεταξύ τους.


    Vir prudens non contra ventum mingit
  •  21-01-2008, 12:59 39427 σε απάντηση της 39425

    Απ: Query Analyzer - SQL 2000

    Είναι ένας πίνακας που λέγετε material που έχει πολλά πεδία.

    Αυτά που μας ενδιαφέρουν είναι αυτά.

    Code (δεν μπορούμε να αλλάξουμε κάτι σε αυτό, ούτε χρειάζεται.)

    ΑΑ (δεν μπορούμε να αλλάξουμε κάτι σε αυτό, ούτε χρειάζεται.)

    GrGuideAA (δεν μπορούμε να αλλάξουμε κάτι σε αυτό, ούτε χρειάζεται.)

    AltCode (εδώ γράφουμε ότι θέλουμε)

     

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

    Και να κάνει αυτή την δουλεία στο Query Analyzer της SQL 2000

    update material
    βλέπει μια μια ξεχωριστά την κάθε εγγραφή και βλέπει ΑΝ στο δικό της GrGuideAA έχει μέσα αριθμό τότε τον ψάχνει να τον βρει στο πεδίο ΑΑ μιας άλλης εγγραφής Και τότε αντιγραφή το Code της, από την εγγραφή που βρήκε, στο δικό της AltCode Αν στο GrGuideAA είναι κενό τότε αντιγράφει το δικό της Code στο δικό της AltCode.

     

    Ελπίζω να το έγραψα ανθρώπινα..

  •  21-01-2008, 13:45 39430 σε απάντηση της 39427

    Απ: Query Analyzer - SQL 2000

    Χρειάζεσαι οπωσδήποτε ένα query; Μπορεί και να γίνεται αλλά τώρα δεν προλαβαίνω να το σκεφτώ. Με δύο διαδοχικά queries γίνεται κάπως έτσι:

    UPDATE Materials M1
    SET M1.AltCode = M2.Code
    INNER JOIN Materials M2 ON M1.GrGuideAA = M2.ΑΑ

    UPDATE Materials M
    SET M.AltCode = M.CODEPAGE
    WHERE M.GrGuideAA IS NULL

    Κάνε ένα backup τα data σου πριν το τρέξεις γιατί ενδέχεται να μην έχω καταλάβει καλά το ζητούμενο

     


    Vir prudens non contra ventum mingit
  •  21-01-2008, 13:47 39431 σε απάντηση της 39427

    Απ: Query Analyzer - SQL 2000

    stefgrifon:

    update material
    βλέπει μια μια ξεχωριστά την κάθε εγγραφή και βλέπει ΑΝ στο δικό της GrGuideAA έχει μέσα αριθμό τότε τον ψάχνει να τον βρει στο πεδίο ΑΑ μιας άλλης εγγραφής Και τότε αντιγραφή το Code της, από την εγγραφή που βρήκε, στο δικό της AltCode Αν στο GrGuideAA είναι κενό τότε αντιγράφει το δικό της Code στο δικό της AltCode.

     

    Αυτό είναι το κινέζικο. Αντί να προσπαθείς να γράψεις πως νομίζεις ότι θα είναι το Update, γράψε τί θέλεις να κάνεις


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-01-2008, 14:58 39432 σε απάντηση της 39431

    Απ: Query Analyzer - SQL 2000

    Αυτός είναι ο πίνακας material.

    ΑΑ

    Code

    AltCode

    GrGuideAA

    1

    431-458

     

     

    2

    431-459

     

     

    3

    431-460

     

     

    4

    431-461

     

     

    5

    431-462

     

     

    6

    4314

     

    1

    7

    4315

     

    1

    8

    4311

     

    3

    9

    4312

     

    3

     

    Θέλω να βλέπει το πεδίο GrGuideAA αν έχει μέσα αριθμό τότε ψάχνει να τον βρει στο πεδίο ΑΑ Και τότε αντιγραφή το Code της εγγραφής που θα βρει στο δικό της AltCode.

    Αν δεν γράφει κάτι μέσα στο GrGuideAA τότε αντιγράφει το Code στον AltCode.

    Για να βγει αυτό το αποτέλεσμα.

    ΑΑ

    Code

    AltCode

    GrGuideAA

    1

    431-458

    431-458

     

    2

    431-459

    431-459

     

    3

    431-460

    431-460

     

    4

    431-461

    431-461

     

    5

    431-462

    431-462

     

    6

    4314

    431-458

    1

    7

    4315

    431-458

    1

    8

    4311

    431-460

    3

    9

    4312

    431-460

    3

     

    Συχώρεσε που τα γράφω περίεργα, μακάρι να ήξερα να στα γράψω με την λογική που χρειάζεται.

    Άσε έχεις πλέξει.Smile

    Ελπίζω να τα κατάφερα

  •  21-01-2008, 18:53 39440 σε απάντηση της 39432

    Απ: Query Analyzer - SQL 2000

    Ναι, με μερικές μικρές διορθώσεις τα query παίζουν:

    UPDATE m1
    SET m1.AltCode = M2.Code
    FROM Material m1
    INNER JOIN Material M2 ON m1.GrGuideAA = M2.ΑΑ

    UPDATE Material
    SET AltCode = CODE
    WHERE GrGuideAA =''

    Το WHERE στο δεύτερο μπορεί να χρειαστεί WHERE GrGuideAA IS NULL ανάλογα με τα περιεχόμενα.


    Vir prudens non contra ventum mingit
  •  21-01-2008, 20:26 39442 σε απάντηση της 39440

    Απ: Query Analyzer - SQL 2000

    Ωραία!!!  Το  ένα από τα δυο, δούλεψε όπως το βλέπεις από κάτω.

    update clroot.material

    SET AltCode = CODE

    WHERE GrGuideAA IS NULL

     

    Μήπως έχεις χρόνο και για το πρώτο; Γιατί δεν μου παίζει.

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

     

     

    /*update clroot.material

    set  altcode = code

    where not (code = isnull(altcode,'  ')) and grguide=1 */

     

    update clroot.material

    set altcode = d.c

     

    from (select m1.aa a, m2.code c

    from clroot.material m1, clroot.material m2

    where isnull(m1.grguideaa,0) <> 0

    and m1.grguideaa = m2.aa) d

     

    where d.a = aa and altcode <> d.c

     

  •  21-01-2008, 21:02 39443 σε απάντηση της 39442

    Απ: Query Analyzer - SQL 2000

    Tongue Tied Έλεος! Πρέπει να είσαι πιο συγκεκριμένος! Σε όλο το thread τα μισά posts είναι για να σου ζητήσουμε παραπάνω πληροφορίες! Όταν λες δεν παίζει τι ακριβώς συμβαίνει; Βγάζει μήνυμα λάθους; Τρέχει αλλά δεν συμβαίνει τίποτα; Ενδεχομένως να μην παίζει λόγω data types. Θα πρέπει να μας πεις ακριβώς τι τύπος είναι το κάθε πεδίο.


    Vir prudens non contra ventum mingit
  •  21-01-2008, 21:25 39444 σε απάντηση της 39442

    Απ: Query Analyzer - SQL 2000

    Επειδή παρακολουθώ την συζήτηση έφτιαξα ακριβώς τον ίδιο πίνακα για να το δοκιμάσω.
    Tο παρακάτω sql statement έπαιξε μια χαρά (με πρόλαβε Crying):
    KelMan:

    UPDATE m1 SET m1.AltCode = M2.Code
    FROM Material m1
    INNER JOIN Material M2 ON m1.GrGuideAA = M2.ΑΑ

    Η δομή του πίνακα που έφτιαξα είναι :
    AA int
    CODE nvarchar(50)
    AltCode nvarchar(50)
    GrGuideAA int

    Δώσε το error που βγάζει.


    Φιλάρετος Σεβαστιάδης.

    Albert Camus: Life is the sum of your choices.

  •  21-01-2008, 22:30 39446 σε απάντηση της 39444

    Απ: Query Analyzer - SQL 2000

    Αυτά μου λέει ο κύριος Query.

    ---------------

    Server: Msg 208, Level 16, State 1, Line 1

    Invalid object name 'Material'.

    Server: Msg 208, Level 16, State 1, Line 1

    Invalid object name 'Material'.

     

     

     

    Data type

    Size

    Nulls

    AA

    int

    4

    Oxi

    Code

    Varchar

    20

    Nai

    AltCode

    Varchar

    20

    Nai

    GrGuideAA

    int

    4

    NAI

     

    ειλικρινά συγγνώμη. Μόλις παρατήρησα που τα έγραφε και εγώ δεν το έβλεπα.

    Η τουλάχιστον ελπίζω να είναι αυτά που έπρεπε να πω από το πρωί.


  •  21-01-2008, 22:37 39447 σε απάντηση της 39446

    Απ: Query Analyzer - SQL 2000

    Σου λέει ότι δεν βρίσκει τον πίνακα. Ωστόσο για να τρέχει το δεύτερο query πάει να πει ότι υπάρχει ο πίνακας. Κάτι άλλο συμβαίνει. Μήπως όταν έτρεξες το πρώτο query δεν ήσουν στη σωστή βάση;


    Vir prudens non contra ventum mingit
  •  21-01-2008, 22:54 39448 σε απάντηση της 39447

    Απ: Query Analyzer - SQL 2000

    Αν προσέξεις στο δεύτερο, έβαλα
    update clroot.material
    γιατί χωρίς το clroot   μου έλεγε το ιδιο.
    Server: Msg 208, Level 16, State 1, Line 1
    Invalid object name 'material'.


    Αν Κανω το ιδιο και στο άλλο δηλαδή ετσι.

    UPDATE m1
    SET m1.AltCode = M2.Code
    FROM clroot.material  m1
    INNER JOIN clroot.Material M2 ON m1.GrGuideAA = M2.ΑΑ

    μου λεει.

    Server: Msg 207, Level 16, State 3, Line 1
    Invalid column name 'ΑΑ'.

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