Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [vb.net] Problema con SQL nidificata

    Problema con una sql nidificata.
    Ho due tabelle: Movimenti e Dett_Mov
    Nella prima metto Data e importo, nella seconda, oltra ai vari dati, devo mettere l'ID del movimento.

    L'inserimento nella tabella Movimenti è ok. I problemi sono in Dett_Mov.
    Ho fatto:
    "Insert into Dett_Mov(ID_Mov) VALUES(SELECT Max(ID) from movimenti);"

    Risultato: "Errore di sintassi. nell'espressione della query 'select max(ID) from movimenti ' "


    Sapete aiutarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    vedendola sembrerebbe corretta nella sintassi. Il nome del campo (id) è corretto?

  3. #3
    Sì, i nomi dei campi sono esatti.
    L'unica cosa è che ID è di tipo contatore (uso ms Access per questo progetto).

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... non e' corretta. In questo caso devi scrivere

    INSERT INTO Dett_Mov(ID_Mov) SELECT Max(ID) FROM movimenti;

  5. #5
    Gentilissimi. Grazie oregon, funziona.

    Ma omettendo "VALUES" come faccio ad inserire in Dett_Mov altri valori?

    Mi spiego meglio:
    In ID_Mov metto il valore della select, ma devo riempire pure gli altri campi di Dett_Mov con valori provenienti da Datagrid e TextBox.

    Insert into Dett_Mov(ID_Mov,IVA) SELECT Max(ID) from movimenti, '"& dtra.item(i,0) &"' ;"

    Così mi da errore di sintassi.
    Come fare ad implementare una soluzione mista?

    Grazie

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Spiega un po' meglio cosa vuoi fare perche' non mi e' chiaro ...

    Hai una tabella che si chiama

    Dett_Mov

    con dei campi, tra cui

    ID_Mov
    IVA

    e un'altra tabella

    Dett_Mov

    con altri campi.

    Quali campi vuoi trasferire? Quanti record?

  7. #7
    Ti spiego meglio. Sono stato poco chiaro.
    Ho due tabelle: Movimenti e Dett_Mov

    Nella prima metto Data e importo, nella seconda devo mettere l'ID del movimento e altri dati(tra cui IVA e Prezzo_Unitario).

    Per l'inserimento nella tabella Movimenti non ci sono problemi.

    Per inserire i dati in dett_Mov sto diventando scemo :
    Allora:

    1) Con la select recupero l'ultimo ID di Movimenti. Con il tuo consiglio sono riuscito ad inserirlo correttamente

    Il punto è che devo contemporaneamente inserire in Dett_Mov altri campi(tipo IVA) che non sono contenuti in Movimenti, ma in caselle di testo e DataGrid e quindi non possono essere inseriti con la select.

    In questo modo:
    Insert into Dett_Mov(ID_Mov,IVA) SELECT Max(ID) from movimenti, '"& dtra.item(i,0) &"' ;"
    ricevo errore.

    Se metto values:
    Insert into Dett_Mov(ID_Mov,IVA) Values( SELECT Max(ID) from movimenti, '"& dtra.item(i,0) &"') ;"
    OPPURE:
    Insert into Dett_Mov(ID_Mov,IVA) SELECT Max(ID) from movimenti, Values( '"& dtra.item(i,0) &"') ;"
    Mi da errore lo stesso
    "Il numero dei valori nella query non corrisponde a quello dei campi di destinazione"

    Ecco spiegato il problema

    Spero di essere stato chiaro...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se dalla tabella Movimenti devi prelevare solamente il massimo ID, allora devi usare una SELECT per trovare tale massimo e una INSERT per inserire il valore trovato insieme agli altri nell'altra tabella.

    Insomma, non un'unica INSERT ma una SELECT e una INSERT, magari racchiuse in una transazione.

  9. #9
    quindi, per capire, una cosa del genere

    Insert into Dett_Mov(ID_Mov,IVA) SELECT Max(ID) from movimenti, Values( '"& dtra.item(i,0) &"') ;"
    non è lecita?

    Dovrei fare una select max(ID), mettere questo id da qualche parte e solo dopo fare l'insert?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... perche' con

    FROM movimenti, Values

    si intende dalla tabella movimenti e dalla tabella Values ...

    Racchiudi le due frasi SQL in una transazione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.