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

Discussione: delete + tabelle

  1. #1

    delete + tabelle

    come si fa a fare una query simile?

    "DELETE FROM files WHERE
    id_C = '$user_id'
    AND
    //qui viene il difficile
    volgio cancellare anche quei record
    che abbiamo il campo
    id_C [che è anche una key in un'altra tabella]
    nulla in quell'altra tabella

  2. #2
    Si capiva di piu' prima che modificassi. Premetto che devi fare due queries. Una cancella i dati che sono equi-join, cioe' presenti in entrambe le tabelle e puoi cancellare in entrambe le tabelle, un'altra che cancella i dati della prima tabella dove non ci sono corrispondenze nella seconda tabella.

    Essendo una cancellazione, o tieni prima copia, oppure provi con SELECT. Quando ottieni il risultato aspettato passi al delete con gli stessi criteri di ricerca.

    Vediamo:
    codice:
    DELETE tab_a a                cosi' cancella solo tab_a
    DELETE tab_a a, tab_b b       cosi' cancella entrambe
    
    Tu pero' prima fai:
    
    SELECT *                  
    FROM tab_a a, tab_b b
    where a.id_C = b.id_C
    AND b.id_C IS NULL          <-- dopo togli questa riga 
    AND a.id_C = '$user_id'
    Prova con e senza la riga dove c'e' NULL. Quando il risultato atteso e' corretto cambia la SELECT con IL DELETE corrispondente.


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

  3. #3
    grazie piero

    unultima cosa
    ho settato la scadenza dei cookie in questo modo

    $scadenza = time()+(3600*6)

    e il campo in cui registro la data di creazione è un datetime

    scusa la mia pura pigrizia
    potrei fare anche una ricerca o leggermi il mio librone
    però sono fusa e non ne posso +


    se faccio
    "SELECT ......
    WHERE data > $scadenza

    i valori sono della stessa razza e l'operazione andrà a buon fine
    o ho sbagliato nel scegliere il tipo di campo
    grazie se riposponderai

    per ora nelle select sei un punto di riferimento

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    mi sa sempre riprendendo una recente discussione di piero che nn sono della stessa razza

    time->unix timestamp
    mysql->formato suo (aaaammgghhmmss)

    anzi date time è n'altro ancora me pare..

    poi piero viene e ti aiuta
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Originariamente inviato da recensore
    ho settato la scadenza dei cookie in questo modo

    $scadenza = time()+(3600*6)

    "SELECT ......
    WHERE data > $scadenza
    Se hai un campo DATETIME si presenta in questo modo:

    yyyy-mm-dd H:m:s

    Lo puoi tradurre in unix timestamp e verificare i record nel where.

    where UNIX_TIMESTAMP(data) > '$scadenza'

    in questo caso ti seleziona i record dove data e' superiore a scadenza.




    @luke83... che fai l'apripista????

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

  6. #6
    ohhh grazie mille

    sono


    domandina...non è importante che sia un datetime
    se imposto il campo della data di creazione con un TIMESTAMP invece di un datetime è lo stesso?

  7. #7
    Originariamente inviato da recensore
    ohhh grazie mille

    sono


    domandina...non è importante che sia un datetime
    se imposto il campo della data di creazione con un TIMESTAMP invece di un datetime è lo stesso?
    Nel tuo caso e' lo stesso, come pero' e' lo stesso come ti ho detto sopra... il vantaggio del datetime e' che e' leggibile direttamente, l'altro va interpretato.

    UNIX TIMESTAMP sta in un INT(10) 4 byte, datetime occupa esattamente il doppio 8 byte. Vedi tu come ti e' piu' comodo... sono solo spiccioli di spazio...


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

  8. #8
    allora uso TIMESTAMP
    perchè la data mi serve solo per sapere se è scaduta l asessione
    non devo visualizzare il dato
    e poi così risparmio in byte no?!! :=)
    grazie mille


    mhhh
    ho appena modificato il campo
    mhhh
    TIMESTAMP e UNIX TIEMSTAMP come tipo campo per te sono lo stesso?
    perchè il secondo non me lo da

    e poi TIMESTAMP è un int di 14

    sono lo stesso tipo o il mysql ceh uso è vecchio?

  9. #9
    UNIX_TIMESTAMP non TIMESTAMP di mysql....

    campo INT(10) unsigned

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

  10. #10
    mhhh
    UNIX STAMP non c'è
    sto usando mysql su ...
    va bhe on si può far nomi di host a pagamento giusto?

    veramente non c'è!!!

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.