Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Cancellare record simili e lasciare solamente 1 record ---

    Ciao ragazzi,

    ho un database access di questo genere :

    |-ID-|------Email--------|-descrizione-|
    | 1 | test1@dominio1.it | dom 1t |
    | 2 | test2@dominio1.it | domo 25 |
    | 3 | test3@dominio1.it | domio 2fo |
    | 4 | test4@dominio2.it | domnio 5s |
    | 5 | test5@dominio3.it | dom 6d |
    | 6 | test6@dominio3.it | dm 7f |

    come posso fare a cancellare i record con i domini simili e lasciare solamente 1 ?

    Esempio : ho 3 domini1.it , voglio cancellarne 2 e farne rimanere solamente 1, ma siccome non ho solamente 6 record, c'è un sistema che possa automaticamente cancellare tutti i doppioni e farne rimanere solamente 1 per ognuno ?

    Potete aiutarmi ?

  2. #2
    io avevo pensato di fare cosi, ma ho bisogno di una mano ....

    fare una condizione ,

    SE dopo la @ trovi un nome che sia uguale, cancelli tutti i record uguali lasciandone soltanto 1.

    E' possibile sfruttare questa mia condizione ?

  3. #3
    Come prima idea mi vien da pensare ad un ciclo che preso il campo di ogni riga (una per una), cancelli tutte quelle che hanno valori simili

    Esempio:
    Codice PHP:
    foreach ($righe AS $riga) {
        
    mysql_query("DELETE FROM tabella WHERE campo LIKE '%$riga%'");

    Però, a parte essere un ciclo pesantino (specialmente quando trova le ricorrenze da cancellare), vi è la possibilità che ti cancella anche fin troppo, nel senso che quel LIKE è un pò generico quindi dovresti adattare la query (del resto così te ne cancella tutte, ma vedi te, è solo un input)

  4. #4
    ti ringrazio per la risposta.

    ma in questo modo i record che considera uguali sono ex :

    sssss
    sssss
    sssss

    se trova dei record ex (uguali dopo @ ):

    assss@1.com
    bssss@1.com
    hssss@1.com

    non riesce ad individuarli e non li considera uguali, invece dovremmo trovare un sistema che quando trova i record con @ lui legge quello che c'e dopo e se in quel caso le parole dopo la @ sono uguali li cancella fino a rimanerne soltanto 1 .
    Come si potrebbe fare a leggere tutto dopo la @ ?

  5. #5
    e se provi con una split????

    Prova guarda qui: IT.php.net

  6. #6

    ciao...

    si infatti la split va benissimo, ma come vorresti fare poi la query con la condizione IF?

  7. #7
    buttandola li alla veloci farei una select di tutte le nuple... dopodiche scorro tutta la risposta della query con
    Codice PHP:
    while($riga Mysql_fetch_array[$ris]) 
    e controllando tramite split se la parte dopo '@' è gia presente nell'array ausiliario(scorrendolo tutto) allora cancello questa nupla(o riga chiamala come vuoi) e salto alla prossima npla altrimenti memorizzo la parte dopo '@' nell'array ausiliario e salto alla prossima riga...
    Si la cosa potrebbe starci, bisognerebbe provare a scriverla meglio...

    la cosa mi sà tanto che è abbastanza pesante... però mi sembra anche che non è un'operazione che viene fatta frequentemente... o sbaglio???

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non conosco access e non so se ha a disposizione le stesse funzioni SQL di MySQL (immagio di sì, magari cambiano i nomi e le firme).

    Per esempio con

    SELECT id FROM tabella GROUP BY (SUBSTRING(email, LOCATE("@", email)));

    prendi tutti gli id dei primi record raggruppati per domini diversi. La DELETE che vai a fare è su tutti gli ID diversi da quelli che hai appena trovato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    bella la SUBSTRING(email, LOCATE("@", email)) non ne ero a conoscenza...

    Bhe penso proprio che questa soluzione sia migliore della mia...

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Probabilmente qualche GURU di MySQL avrà una soluzione ancora migliore... io mi fermo a quella
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.