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

 

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

INSERT , SELECT MAX(ID)

Îåêßíçóå áðü ôï ìÝëïò kostasdiktia. Τελευταία δημοσίευση από το μέλος kostasdiktia στις 16-06-2010, 20:38. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-06-2010, 18:14 59172

    INSERT , SELECT MAX(ID)

     Καλησπέρα,

    θέλω να εισάγω σε έναν πίνακα (SupOfPod) εγγραφές οι οποίες στο column PROD_ID, να περνούν το μέγιστο ID από τον πίνακα Products.
    Στην παρακάτω επερώτηση λαμβάνω το μνμ "Subqueries are not allowed in this context. Only scalar expressions are allowed."

    SQLCmnd = New SqlCommand("INSERT INTO SupOfPod (PROD_ID,SUP_ID) VALUES ((SELECT MAX(ID) FROM Products)," & dr.Item(0).ToString & ")", SQLConn)
    SQLCmnd.ExecuteNonQuery()

    Κάποια ιδέα?

    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  16-06-2010, 18:19 59174 σε απάντηση της 59172

    Απ: INSERT , SELECT MAX(ID)

    Αντί για INSERT INTO ... VALUES() χρησιμοποίησε την σύνταξη INSERT INTO ... SELECT MAX(ID), ... FROM Products. Επίσης, αντί να κάνεις string concatenation το οποίο και πιο αργό είναι και επικίνδυνο, χρησιμοποίησε parameterized queries.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  16-06-2010, 20:11 59176 σε απάντηση της 59174

    Απ: INSERT , SELECT MAX(ID)

    Το θέμα είναι πως  ο πίνακας SupOfPod έχει 3 columns με πρωτο το ID auto increased & primary key, οπότε για αυτό χρησιμοποιώ VALUES. Μπορώ να το αποφύγω με κάποιο άλλο τρόπο? Ευχαριστώ για το tip αποφυγής string concatenation.
    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  16-06-2010, 20:25 59178 σε απάντηση της 59176

    Απ: INSERT , SELECT MAX(ID)

    Το VALUES δεν έχει καμμία σχέση με τις στήλες. Το VALUES σημαίνει ότι θέλεις να δώσεις κάποιες τιμές οι οποίες δεν προέρχονται από άλλο query. Μάλλον το μπέρδεψες με τα ονόματα των στηλών, τα οποία όντως απαιτούνται. Αν γράψεις π.χ. 
    INSERT INTO SupOfPod (PROD_ID,SUP_ID)
    SELECT MAX(ID), @MySupID 
    FROM Products
    θα γίνει αυτό που θέλεις.

    Επειδή βλέπω ότι δεν έχεις εξοικειωθεί ακόμα με την SQL ως γλώσσα, θα ήταν καλό να ρίξεις μία ματιά σε κάποια tutorials για να μάθεις πως δουλεύουν οι βασικές εντολές, SELECT, INSERT, UPDATE, DELETE.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  16-06-2010, 20:38 59180 σε απάντηση της 59178

    Απ: INSERT , SELECT MAX(ID)

    Όντως! Δυστυχώς στο παραπάνω  από κάτι tutorials - forum suggestions κατέληξα να το γράψω.
    H λύση που πρότεινες είναι σωστή.

     Ευχαριστω πολύ..

    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems