Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [SQL] Errore Update

  1. #1

    [SQL] Errore Update

    Salve ragazzi, ho queste due piccole tabelle:

    Tabella Prodotto
    ID Tipo Fornitore Stato
    1 Birra 1 null
    2 Vino 2 Presente
    3 Coca 2 Presente
    4 Brandy 3 Assente
    5 Campari 4 Presente
    6 Caffè 1 null
    7 Latte 2 null


    Tabella Fornitore
    ID Nome Telefono
    1 Rossi 683844
    2 Bianchi 675445
    3 Gialli 68656
    4 Verdi 621323


    Devo fare una query di update, in questo modo: devo aggiungere lo stato
    assente nella tabella prodotto, dove il campo fornitore è uguale al campo id
    della tabella fornitore, ho pensato di fare in questo modo:

    update prodotto
    set stato='Assente'
    where prodotto.fornitore=
    (select id
    from fornitore);
    Ma viene segnalato l'errore : Error 1064: you have an errore in your SQL
    syntax near 'select id from fornitore)' al line 4, qualcuno potrebbe
    aiutarmi a capire il motivo di questo errore?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma scusa, quindi deve diventare 'Assente' lo stato di tutti i record nella tabella Prodotti?

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    update prodotto
    set stato = 'Assente'
    where fornitore in
    (select id
    from fornitore);
    anche se non ne capisco il motivo

  4. #4
    Le righe delle tabelle non sono tutte, nella tabella prodotto ci sono degli id del fornitore, che non sono presenti nella tabella fornitore, cmq si bisogna far diventare assente tutti i record della tabella prodotti, ed usando in segnala sempre lo stesso errore

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Era meglio che facessi l'esempio con le righe che hanno un id non presente nella tabella fornitore ... Comunque, prova con

    UPDATE
    (SELECT * FROM Fornitore
    INNER JOIN Prodotto
    ON Fornitore.ID=Prodotto.Fornitore)
    SET Stato = 'Assente';

  6. #6
    Ho risolto il problema, dipendeva dal fatto che la query interna restituiva più di una riga, quindi non poteva confrontarlo con il campo della query esterna

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sì scusa ... ma dato che un po' di tempo l'ho perso, potresti dire con quale query hai risolto o se hai risolto con quella che ti ho suggerito o se comunque ti e' servita ...

    Non che sia fondamentale ma ...

  8. #8
    Ho risolto facendo le due query in maniera separata, così ogni volta che la prima query selezionava un id, esso si andava a confrontare con la seconda query, grazie comunque per l'aiuto, questo è il codice:

    codice:
    res=stat.executeQuery("select id from fornitore"); 
    
    while (res.next()) 
    { 
    	c=res.getString("id");
    						
    	stat = con.createStatement(); 
            n=stat.executeUpdate("update prodotto set stato ='Assente'" + "where fornitore=" + c);
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma cosi' l'aggiornamento lo fai da codice con due query ...

    Penso che se provassi la query che ti ho proposto, faresti lo stesso lavoro senza codice e con una sola query ...

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.