Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Errore 1093 su query annidata

    Ottengo un errore di sintassi di cui non riesco a determinare il motivo su questa query:

    codice:
    DELETE FROM utenti WHERE utenti.id IN (
    SELECT utenti.id
    FROM utenti, eventi
    WHERE eventi.tipo =3
    AND eventi.ext_id = utenti.id
    AND utenti.stato =1
    AND (
    utenti.tipo =5
    OR utenti.tipo =10
    )
    AND NOW( ) > DATE_ADD( eventi.data, INTERVAL 10
    DAY )
    )
    Questo l'errore:
    #1093 - You can't specify target table 'utenti' for update in FROM clause

    Qualche idea?

  2. #2
    codice:
    DELETE utenti 
    FROM utenti, eventi 
    WHERE utenti.id IN (
    SELECT utenti.id
    FROM utenti, eventi
    ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ho fatto così:

    codice:
     DELETE utenti FROM utenti,
    eventi WHERE utenti.id IN (
    SELECT utenti.id
    FROM utenti, eventi
    WHERE eventi.tipo =3
    AND eventi.ext_id = utenti.id
    AND utenti.stato =1
    AND (
    utenti.tipo =5
    OR utenti.tipo =10
    )
    AND NOW( ) > DATE_ADD( eventi.data, INTERVAL 10
    DAY )
    )
    Mi pare sia come mi hai indicato.. non l'ho capita.. però non funziona.. mi chiede conferma e poi mi ripropone il medesimo errore 1093..

  4. #4
    quale versione di mysql?

    proverei a fare prima la select per vedere che almeno quella funzioni.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5

  6. #6
    Originariamente inviato da superpelo
    La select funziona..

    MySQL 4.1, uso tabelle MyISAM.

    credo non si possa selezionare un id nella stessa tabella in cui si cancella.
    E neanche citare nel from la tabella nella select.... prova in questo modo.

    codice:
    DELETE utenti FROM utenti, eventi 
    WHERE utenti.id IN (
    SELECT id
    FROM eventi
    WHERE eventi.tipo = 3
    AND eventi.ext_id = utenti.id
    AND utenti.stato =1
    AND (
    utenti.tipo =5
    OR utenti.tipo =10
    )
    AND NOW( ) > DATE_ADD( eventi.data, INTERVAL 10
    DAY )
    )

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7

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.