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

Discussione: righe uguali

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127

    righe uguali

    allora.
    su un db access ho una tabella di questo tipo
    ID | CodiceA | CodiceB | Data
    ora visto ke in questa tabella c'è dentro di tutto è di più vorrei evidenziare (e poi modificare, cancellare o si vedrà) tutte le righe che hanno la coppia CodiceA e CodiceB ripetuta..
    tipo in questa tabella
    codice:
    ID | CodiceA | CodiceB | Data
    1  | A1      | B1      | oggi
    2  | A2      | B1      | ieri
    3  | A1      | B2      | 3 giorni fa
    4  | A1      | B1      | dopodomani
    5  | A3      | B2      | 12 giorni fa
    voglio ottenere l'id 1 e 4 xkè hanno la coppia CodiceA, CodiceB uguale.. non importa se l'ID (ovviamente) e la data sono diversi..
    soltanto ke non mi viene in mente come ottenere questo risultato

    grazie
    ciao

    edit: ehm dimenticavo.. dei 300 record uguali ke salteranno fuori 299 li modifico/cancello invece il 300^ (cioè il più vekkio..) lo tengo inalterato..

  2. #2
    Non ho ben chiaro le uguaglianze dei codici: conta solo la parità di numeri?

    In questo caso, se ad esempio carichi i dati in un datatale, puoi controllare coppia per coppia confrontando i dati:
    codice:
    dim dt as DataTable=CaricaDati()
    for i as integer=0 to dt.Rows.Count-1
    dim a as string=dt.Rows(i)("CodiceA").ToString()
    dim b as string=dt.Rows(i)("CodiceB").ToString()
    ' confronto solo i due codici dal secondo carattere
    if a.Substring(1)=b.Substring(1) then
       ' questi codici sono uguali
       ' posso eseguire le operazioni che voglio:
       ' dt.Rows(i).Delete() ' per cancellare
    end if
    next
    Ma vuoi evidenziare queste similarità in fase di visualizzazione o di elaborazione?

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    >> Non ho ben chiaro le uguaglianze dei codici: conta solo la parità di numeri?
    no.. proprio tutto il testo.. ora l'ho messo giù semplificato
    >> Ma vuoi evidenziare queste similarità in fase di visualizzazione o di elaborazione?
    voglio modificare proprio il db, una volta x tutte

    cmq mi dici di utilizzare una data table..
    ank'io ci avevo pensato (avevo buttato giù qualcosa ma mi veniva un errore ) ma speravo ke ci fosse una query sql specifica

  4. #4
    Be', se devi cancellare i record con il contenuto dei due campi uguale è sufficiente:
    codice:
    delete * from tabella where CodiceA=CodiceB
    O con il datatable come sopra, quindi un update risolve tutto

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    doppio: vedi sotto

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    Originariamente inviato da AndreaZani
    codice:
    delete * from tabella where CodiceA=CodiceB
    eh no vedi ke nn hai capito
    o meglio vedi ke nn so spiegare..
    io voglio la coppia di valori (CodiceA, CodiceB) non necessariamente uguali tra loro .. l'importante è ke sia diversi dalla coppia (A, B) di un'altra riga..
    rivediti la tabella ke ho fatto nel primo messaggio.. forse ora capisci.. e capisci xkè io mi sto impastando in questo problema

  7. #7
    Ah, ok, ora ho capito!

    Rimango dell'idea dell'uso del datatable; prendi il valore di CodiceA e di CodiceB, quindi controlli il resto dei record del datatable alla ricerca se esiste un record con gli stessi valori. Quindi passi al secondo record e controlli il resto dei record alla ricerca e così via...

    Se utilizzi SQL server con una SP il tutto è molto più performante.

    In casi come questi io preferisco prevenire: non puoi fare un controllo preventivo quando inserisci un record dell'esistenza di altri record con quei campi uguali?

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  8. #8
    eh no vedi ke nn hai capito
    Vale quanto detto in un altro thread... presenterò certificato medico come mi hai suggerito!

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    >> Se utilizzi SQL server con una SP il tutto è molto più performante.
    purtroppo sono relegato ad access..
    xò mi potresti dare un esempio generale di come sarebbbe la sp?

    >> In casi come questi io preferisco prevenire: non puoi fare
    >> un controllo preventivo quando inserisci un record
    >> dell'esistenza di altri record con quei campi uguali?
    putroppo non posso farlo.. cioè è una situazione complicata..

  10. #10
    Sto facendo ora delle prove... con Sql Server se scrivo la query:
    codice:
    select codicea,codiceb,count(*)
    from nome_tabella
    group by codicea,codiceb;
    Ritorna, nel tuo caso, che la coppia:
    "a1", "b1" è presente due volte. Quindi per cancellare:
    codice:
    delete from nome_tabella where id=(select top 1 id from nome_tabella where codiceA='a1' and codiceB='b1' order by id desc)
    O una qualsiasi altra tecnica di tuo gusto per la cancellazione.

    Il problema è: Access accetta quanto sopra?

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

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.