Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454

    [PHP-MySql] Problema con DELETE usando due tabelle

    Salve a tutti,

    io voglio cancellare dei valori da due tabelle e questo è il codice che uso:
    codice:
    $sql="DELETE FROM risp r, ris_testo rt WHERE r.topic_id='".$d_id."' AND r.post_id=rt.post_id";
    $dosql=mysql_query($sql,$conn) or die(mysql_error());
    Ora mi dà errore, forse perché non si possono cancellare in contemporanea valori da due tabelle? Oppure c'è un errore nel codice?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    non credo che delete supporti una sintassi a due tabelle. Comunque fai due query e ti togli i problemi.
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  3. #3
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Eh si ma era per evitare un po' di codice.

    Se lo faccio con due query devo memorizzare prima gli id di quelli che cancella per poi cancellarli nell'altra tabella, dato che post_id di una tabella corrisponde a quello dell'altra.


  4. #4
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Originariamente inviato da chris
    non credo che delete supporti una sintassi a due tabelle. Comunque fai due query e ti togli i problemi.
    Veramente la supporta http://dev.mysql.com/doc/mysql/en/delete.html

  5. #5
    Originariamente inviato da Nosfe
    Eh si ma era per evitare un po' di codice.

    Se lo faccio con due query devo memorizzare prima gli id di quelli che cancella per poi cancellarli nell'altra tabella, dato che post_id di una tabella corrisponde a quello dell'altra.

    prova questa sintassi:
    codice:
    DELETE r, rt
    FROM risp r, ris_testo rt 
    WHERE r.post_id = rt.post_id
    AND r.topic_id = '".$d_id."'

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

  6. #6
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    @piero.mac

    Ok ora non mi dà più errore di sintassi bensì questo:
    codice:
    Not unique table/alias: 'r'
    Ho usato la sintassi che mi hai dato tu:
    codice:
    DELETE r, rt
    FROM risp r, ris_testo rt
    WHERE r.post_id = rt.post_id
    AND r.topic_id = '".$d_id."'
    Però siamo vicini alla soluzione no?

  7. #7
    Originariamente inviato da Nosfe
    @piero.mac

    Ok ora non mi dà più errore di sintassi bensì questo:
    codice:
    Not unique table/alias: 'r'
    Però siamo vicini alla soluzione no?
    non usare l'alias...
    codice:
    DELETE risp, ris_testo 
    FROM risp, ris_testo
    WHERE risp.post_id = ris_testo.post_id
    AND risp.topic_id = '".$d_id."'
    In pratica andresti a simulare una foreign key ON DELETE CASCADE.


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

  8. #8
    Utente di HTML.it L'avatar di Nosfe
    Registrato dal
    Jan 2004
    Messaggi
    454
    Andata!

    Grazie piero, come al solito sei sempre tu che mi dai le soluzioni per mysql

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.