SQL μετακίνηση εγγραφών

Theodore Lytras thlytras at gmail.com
Mon Jan 19 15:08:12 EET 2009


Έχω μια ερώτηση για όποιον ξέρει καλή MySQL...

Έστω έχω έναν πίνακα Α με πεδία Α_ID, Α1, Α2, Α3 (δεν έχει σημασία τι τύπου).
Και έστω πίνακας B με πεδία B_ID, B1, B2, B3 (ίδιου τύπου, αντίστοιχα).

Αν θέλω να μετακινήσω την εγγραφή του A με A_ID = 666 στον πίνακα B,
θα δώσω την εντολή:
INSERT INTO B SELECT * FROM A WHERE A_ID = 666 ;

Αν ο πίνακάς Β είχε δομή B_ID, A_ID, B1, B2, B3 (δηλαδή θέλω ξεχωριστό
κλειδί για τον πίνακα B, και να κρατώ και το κλειδί από τον πίνακα Α),
η εντολή θα γινόταν:

INSERT INTO B (A_ID, B1, B2, B3) SELECT A_ID, A1, A2, A3 FROM A WHERE
A_ID = 666 ;

και το B_ID θα έπαιρνε αυτόματα τιμή χάρη στο AUTO_INCREMENT που θα
του έχω βεβαίως βάλει.

Η ερώτηση τώρα είναι η εξής:

Έστω ο πίνακας Β είχε και ένα παραπάνω πεδίο Β4, στο οποίο εγώ θέλω να
βάλω με το χέρι μια δικιά μου τιμή, ενώ στα υπόλοιπα (Β1 ως Β3) να
μπούν οι τιμές από την εγγραφή του πίνακα Α όπως προηγουμένως. Πως
πρέπει να γραφτεί τότε το query???????? (για να μη μου βγάλει οτι
column counts don't match... :( )

π.χ. το ακόλουθο ΔΕ δουλεύει: INSERT INTO B (A_ID, B1, B2, B3, B4)
SELECT A_ID, A1, A2, A3 FROM A WHERE A_ID = 666 VALUES ("φούφουτος");
(θέλω το "φούφουτος" να μπεί στη στήλη B4)

Έχω φάει τον googl-η και δεν έχω βρει ακόμη κάπου να περιγράφεται αυτή
η περίπτωση...

Ευχαριστώ,

Θοδωρής


More information about the Linux-greek-users mailing list