|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
[MySql] Perchè mi da errore quando tento questo insert
Ciao,
ho una tabella fatta così: Codice:
+-----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+----------------+ | Id_Oggetto | int(11) | NO | PRI | NULL | auto_increment | | Titolo | varchar(60) | NO | | NULL | | | Descrizione | text | YES | | NULL | | | Costo_Base | decimal(6,2) | YES | | NULL | | | Scadenza | datetime | YES | | NULL | | | Compralo_Subito | decimal(6,2) | YES | | NULL | | | Id_Venditore | varchar(20) | NO | | NULL | | | Id_Categoria | varchar(30) | NO | | NULL | | +-----------------+--------------+------+-----+---------+----------------+ Codice:
insert into INSERZIONE values (NULL, 'Gibson Les Paul', 'Chitarra elettrica Gibson Les Paul del 1977', 300.00, NULL, '2008-02-27', 'usato', 'Salvo', 17), (NULL, 'Fender Stratocaster', 'Chitarra elettrica Fender Stratocaster del 1973', 300.00, 650.00, '2008-03-04', 'usato', 'Salvo', 17), (NULL, 'Fear Of The Dark', 'Storico Album degli Iron Maiden blabla', 3.00, NULL, '2008-03-04', 'usato', 'Salvo', 15), (NULL, 'Cofanetto Metallica', 'Tutta la discografia dei Metallica in un elegante cofanetto', 5.00, 35.00, '2008-03-04', 'nuovo', 'Lalla', 15), (NULL, 'Cavalletto Manfrotto', 'Ottimo cavalletto Manfrotto', 10.50, 150.00, '2008-03-09', 'nuovo', 'Fotografo84', 10), (NULL, 'Canon Eos 350D', 'Reflex Digitale', 10.00, NULL, '2008-03-12', 'usato', 'Artista77', 11), (NULL, 'Radeon 9800 Series', 'Scheda grafica etcetc', 5.00, 75.50, '2008-03-12', 'nuovo', 'IGOR', 4), (NULL, 'Il Signore degli Anelli', 'Storica trilogia di Tolkien etcetc', 2.00, 25.00, '2008-03-12', 'nuovo', 'IGOR', 4), (NULL, 'Pacchetto Dylan Dog', 'Raccolta di fumetti dal numero 50 al numero 75 tutti prima edizione', 4.00, 80.00, '2008-03-12', 'nuovo', 'Plutone', 4), (NULL, 'Photosho CS3 no problem', 'Manuale di Photoshop CS3 etcetc', 2.00, NULL, '2008-03-15', 'usato', 'Ryo', 4), (NULL, 'Kodak CX3', 'Macchina digitale compatta etcetc', 2.00, NULL, '2008-03-15', 'usato', 'Ryo', 8), (NULL, 'Vinile Black Sabbath', 'Storico vinile edito nel 1968', 5.00, NULL, '2008-03-17', 'usato', 'Marilu', 15), (NULL, 'Painkiller: Vinile Judas Priest', 'Storico vinile dei Judas Priest edito nel 1991', 5.00, NULL, '2008-03-18', 'usato', 'FreeMan', 15), (NULL, 'Fuji FinePix S5700 ', 'Ottima macchina fotografica digitale di tipo bridge balbla', 10.00, 440, '2008-03-19', 'nuovo', 'Fotografo84', 8), (NULL, 'Kommodor 64', 'Storico computer anni 80, etcetc', 2.00, 35.00, '2008-03-15', 'usato', 'Ryo', 4), (NULL, 'Asus - X53ke portatile', 'Ottimi computer poratile che integra tutta la potenza del processore AMD Turion 64 etcetc', 50.00, 630.00, '2008-03-19', 'nuovo', 'ComputerMagix', 4), (NULL, 'Hp Pc portatile pavilion dv6650el', 'Notebook con schermo WXGA da 15,4", risoluzione 1280 x 80 etcetc', 70.00, 80.00, '2008-03-19', 'nuovo', 'ComputerMagix', 4), (NULL, 'Acer Pc portatile aspire 5920 ', 'Notebook con processore intel core 2 duo', 50.00, 760.00, '2008-03-20', 'nuovo', 'ComputerMagix', 4), (NULL, 'Olympus E-510', 'Reflex digitale di ultima generazione con sensore stabilizzato', 10.00, 630.00, '2008-03-21', 'nuovo', 'Fotografo84', 7), (NULL, 'Sigma EF-500 DG ST TTL per Pentax', 'Flash per reflex Pentax prodotto da sigma etcetc', 7.00, NULL, '2008-03-21 17:30:00', 'nuovo', 'Fotografo84', 10); Come mai come risolvere? Ah dimendicavo che la tabella contiene già molti altri record al suo interno Grazie Andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
la tabella ha 8 colonne, mentre la insert (almeno la prima) ne ha 9
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 | |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
Che deficiente che sono...ed ora mi sorge un altro bel problema...nella tabella manca una colonna che dice se l'oggetto a cui si riferisce l'inserzione è nuovo o usato. La mia tabella Inserzione è piena di dati (tipo 130000 record) che ho inserito si con un programma ma comunque faticosamente perchè il programma fa inserire i record 100 a 100 e ho passato le mezzore a cliccare col mouse....tra l'altro poi la tabella inserzione è collegata con incoli di integrità referenziale ad altre tabelle e sarebbe un casino rifare tutto. E' possibile fare questa cosa? Modificare la tabella ed aggiungergli un campo Stato_Oggetto (che può essere o booleano (1: nuovo, 0 usato) o varchar ("nuovo", "usato")) ad ogni record già inserito e possibilmente fare in modo che questo campo assuma casualmente uno dei due valori possibili in fase di modifica della tabella... E' possibile o si tratta di fantascienza? Grazie Andrea |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
Non so dirtelo con certezza ma penso di possa fare. Prova
Ps. se proprio ti da problemi puoi sempre crearti una nuova tabella con i campi che hai più quello che ti serve e poi la riempi con una select dalla tabella che hai ora.
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
se fai un update senza condizione modifichi tutti i campi di una tabella..
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
se fai
Codice:
UPDATE nome_tabella SET nome_campo = valore Ultima modifica di ndakota : 23-05-2009 alle 20:36. |
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Codice:
UPDATE inserzione SET nuovocampo = CASE WHEN MOD(LEN(Titolo),2)=1 THEN 1 ELSE 0 END Abbastanza casuale direi
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
|
|
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
Codice:
mysql> UPDATE inserzione
-> SET Stato_Oggetto enum('nuovo', 'usato') =
-> CASE WHEN MOD(LEN(Descrizione),2)= 1 THEN 'nuovo' ELSE 'usato' END;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'enum('nuovo', 'usato')
CASE WHEN MOD(LEN(Descrizione),2)=1 THEN 'nuovo' ELSE 'us' at line 2
mysql>
Grazie Andrea Ultima modifica di D4rkAng3l : 24-05-2009 alle 17:04. |
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Risolto creando un campo con ALTER TABLE e poi
UPDATE inserzione SET Stato_Oggetto = CASE WHEN(RAND() > 0.5) THEN 'nuovo' ELSE 'usato' END;
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:37.




















