Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    [Access oppure SQLServer] Eliminazione di duplicati ( indifferentemente dal campo )

    Ho una difficolta, ( si tratta di un pezzo di un gioco matematico )

    Una tabella di nome "Tab" con 3 campi NumericiInteri

    c1 -- NumericoIntero -- NotNull
    c2 -- NumericoIntero -- NotNull
    c3 -- NumericoIntero -- NotNull

    - c1 --- c2 --- c3 -
    -- 3 ---- 2 ---- 4 -
    - 14 --- 22 --- 54 -
    -- 2 ---- 1 --- 12 -
    -- 4 ---- 2 ---- 3 -
    - 12 --- 12 --- 12 -
    Voglio trovare tutti i record dove il prodotto di c1 x c2 x c3 sia 24
    e fino a qui è facile

    ___________________________________________

    La particolarità (difficoltà) sta nel fatto che
    -- 3 ---- 2 ---- 4 -
    -- 4 ---- 2 ---- 3 -
    sono di fatto la stessa tripletta di cifre
    pertanto ne voglio solo una ( indifferente quale )

    ____________________________________________


    il risultato finale dovra essere:
    - c1 --- c2 --- c3 -
    -- 3 ---- 2 ---- 4 -
    -- 2 ---- 1 --- 12 -

    Oppure dovra essere:
    - c1 --- c2 --- c3 -
    -- 2 ---- 1 --- 12 -
    -- 4 ---- 2 ---- 3 -

    Al limite mi va bene anche cosi:
    - c1 --- c2 --- c3 -
    -- 1 ---- 2 --- 12 -
    -- 2 ---- 3 ---- 4 -


    Spero di essere stato chiaro
    Grazie

    .

  2. #2
    prendi quelle tre cifre e mettile in ordine (in una colonna separata), poi cancelli i doppioni. se stiamo parlando di pochi record (dieci? venti?) forse ti conviene farlo lato applicativo piuttosto che lato db.

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    I record sono 13.824

    Certamente potrei farlo diversamente ma il problema è che mi sono
    "intestardito" a risolverlo con SQL

    ______________________________________________

    Se vogliamo porre diversamente la domanda:

    Trovare tutte le combinazioni di 3 numeri il cui prodotto sia 24


    Grazie

    .

  4. #4
    scusa, ma questo è il minore dei problemi, mi sembra che sia più difficile eliminare i doppi

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da optime
    ... mi sembra che sia più difficile eliminare i doppi
    La vita è bella perche è difficile

    In effetti il risultato lo ho gia trovato con altri metodi
    c1 ---- c2 ---- c3
    1 ----- 1 ----- 24
    1 ----- 2 ----- 12
    1 ----- 3 ----- 8
    1 ----- 4 ----- 6
    2 ----- 2 ----- 6
    2 ----- 3 ----- 4
    2 ----- 4 ----- 3
    Ma siccome ho la "testaccia dura" in una domenica di estate
    non trovo altro da fare che incasinarmi la vita inventandomi delle difficolta inesistenti
    ( poi avevo premesso che si tratta di un gioco matematico )

    ______________________________________________

    Quindi mi sono fatto un ciclo che popola la tabella
    con i suoi 13824 record ( 24 x 24 x 24 = 13824 )

    perche le 3 cifre ( positive ) sono certamente comprese fra 1 e 24
    se avessi uno zero il prodotto sarebbe zero
    se avessi un maggiore di 24 il prodotto sarebbe maggiore

    _______________________________________________

    adesso sto cercando di eliminare i duplicati.

    In effetti basterebbero 3 campi calcolati
    x1 = il minimo fra c1, c2, c3
    x2 = il medio fra c1, c2, c3
    x3 = il Massimo fra fra c1, c2, c3
    poi concatenati fra di loro
    poi potrei eliminare facilmente i duplicati


    ma viene fuori un bel malloppone di "iif" che vorrei evitare


    .

  6. #6
    non so quali siano questi "altri metodi" ma se in quella logica tu metti che i numeri debbono essere in ordine crescente, non avrai mai i doppioni.

    per essere chiari, questa combinazione

    2 ----- 4 ----- 3

    non verrebbe MAI generata.

    quindi, il problema dell'eliminazione dei doppioni proprio NON esisterebbe (non esistendo doppioni)


  7. #7
    se invece la tabella l'hai già generata, dovrebbe esser sufficiente fare

    DELETE FROM tabella WHERE c1>c2 OR c1>c3 OR c2>c3

    ari

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Originariamente inviato da optime
    ... essere in ordine crescente, non avrai mai i doppioni.

    per essere chiari, questa combinazione

    2 ----- 4 ----- 3

    non verrebbe MAI generata.
    Optime

    Ho modificato il ciclo partendo
    Non da 1
    bensi dal valore attuale del livello superiore

    Funziona bene

    .

  9. #9

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.