Visualizzazione dei risultati da 1 a 9 su 9

Discussione: query che non funziona

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157

    query che non funziona

    Cos'è sbagliato?
    codice:
    update categorie set Stato = 0 where Id = (select  distinct(C.Id) from categorie C, prodotti P  where  P.IdCategoria=C.Id and P.IdProduttore = 13 and (select count(P.Id) as Numc from prodotti P where P.Disponibilita = 1 and P.IdProduttore= 13 and P.IdCategoria= C.Id ) = 0)
    questo blocco funziona in quanto mi tira fuori i record voluti
    codice:
    (select  distinct(C.Id) from categorie C, prodotti P  where  P.IdCategoria=C.Id and P.IdProduttore = 13 and (select count(P.Id) as Numc from prodotti P where P.Disponibilita = 1 and P.IdProduttore= 13 and P.IdCategoria= C.Id ) = 0)
    con questo blocco:
    update categorie set Stato = 0 where Id =
    codice:
    vorrei semplicemente aggiornare i record della tabella categorie precedentemente trovati
    mi da errore
    viva il web.

  2. #2
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    l'errore che ti da ?

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    where id IN

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    Originariamente inviato da Mashin
    l'errore che ti da ?
    You can't specify target table 'categorie' for update in FROM clause
    viva il web.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    Originariamente inviato da nicola75ss
    where id IN
    già provato, solito errore

    UPDATE categorie SET Stato =0 WHERE Id IN (
    SELECT DISTINCT (
    C.Id
    )
    FROM categorie C, prodotti P
    WHERE P.IdCategoria = C.Id
    AND P.IdProduttore =13
    AND (

    SELECT count( P.Id ) AS Numc
    FROM prodotti P
    WHERE P.Disponibilita =1
    AND P.IdProduttore =13
    AND P.IdCategoria = C.Id
    ) =0
    )

    Messaggio di MySQL: Documentazione
    #1093 - You can't specify target table 'categorie' for update in FROM clause
    viva il web.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Allora prova così:

    codice:
    UPDATE categorie SET Stato =0 WHERE Id IN (
    select * from (
    SELECT DISTINCT (
    C.Id
    )
    FROM categorie C, prodotti P
    WHERE P.IdCategoria = C.Id
    AND P.IdProduttore =13
    AND (
    
    SELECT count( P.Id ) AS Numc
    FROM prodotti P
    WHERE P.Disponibilita =1
    AND P.IdProduttore =13
    AND P.IdCategoria = C.Id
    ) =0
    ) as t)

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    Originariamente inviato da nicola75ss
    Allora prova così:

    codice:
    UPDATE categorie SET Stato =0 WHERE Id IN (
    select * from (
    SELECT DISTINCT (
    C.Id
    )
    FROM categorie C, prodotti P
    WHERE P.IdCategoria = C.Id
    AND P.IdProduttore =13
    AND (
    
    SELECT count( P.Id ) AS Numc
    FROM prodotti P
    WHERE P.Disponibilita =1
    AND P.IdProduttore =13
    AND P.IdCategoria = C.Id
    ) =0
    ) as t)
    grazie, sembra aver funzionato. Dico così perchè per motivi di tempo l'avevo già eseguita in 2 tempi e quindi non ha trovato record da modificare.

    Mi spieghi come hai ragionato? Non riesco a capire come fa a funzionare...
    viva il web.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    mysql non permette di aggiornare una tabella quando la stessa viene utilizzata in una query annidata. Quindi è sufficiente assegnare un alias differente alla tabella interna.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    grazie mille della disponibilità.

    Ciao ciao
    viva il web.

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.