[c#]popolare una datagridview con valori univoci

di il
10 risposte

[c#]popolare una datagridview con valori univoci

Salve ,ho la necessita di popolare una datagridview prendendo dati da una tabella mysql,la tabella e' composta da tre colonne  

per popolare la datagridview effettuo questa query:

 string connection = "server=localhost;user id=root;password=xxxxxxxx;database=mondo";
string query ="SELECT DISTINCT citta FROM nazione WHERE COD_CITTA not in (SELECT COD_CITTA FROM nazione WHERE colore = 10) ";
MySqlConnection conn = new MySqlConnection(connection);
MySqlCommand cmd = new MySqlCommand(query, conn);
MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;

il risultato e' il seguente

ora qui nasce il problema a me servirebbe una sola  citta' appartenente al COD_CITTA (non ha importanza quale se roma1 roma2 e cosi via)

e se la colonna colore dovesse assumere il valore 10 anche in una sola row,la città appartenente a quel colore non deve essere caricata.

ho provato varie soluzioni ma senza risultato ,spero che abbiate qualche suggerimento da darmi.

grazie per l'attenzione

10 Risposte

  • Re: [c#]popolare una datagridview con valori univoci

    Ma non dovrebbe essere

    SELECT DISTINCT citta FROM nazione WHERE colore<>10

  • Re: [c#]popolare una datagridview con valori univoci

    22/06/2024 - oregon ha scritto:


    Ma non dovrebbe essere

    SELECT DISTINCT citta FROM nazione WHERE colore<>10

    no perche a me serve un filtraggio della citta' tramite COD_CITTA altrimenti avrei non una sola volta la citta roma ma tante volte per ogni valore <> da 10

  • Re: [c#]popolare una datagridview con valori univoci

    Non si vede l'immagine…

    21/06/2024 - ric_66 ha scritto:


    SELECT DISTINCT citta FROM nazione WHERE COD_CITTA not in (SELECT COD_CITTA FROM nazione WHERE colore = 10)

    stai filtrando dati dalla medesima tabella???

    nazione ha come campi citta, cod_citta e colore

    stai chiedendo con la sql: mostra citta da nazione con cod_citta non presente nella sql cod_citta dela tabella nazione con colore=10….

    confermo la risposta di oregon 

    22/06/2024 - ric_66 ha scritto:


    no perche a me serve un filtraggio della citta' tramite COD_CITTA altrimenti avrei non una sola volta la citta roma ma tante volte per ogni valore <> da 10

    allora…  select citta from nazione (mettilo al plurale) where colore<>10 group by citta

  • Re: [c#]popolare una datagridview con valori univoci

    Forse ho fatto confusione nell'esporre quello che a me servirebbe ,io ho una tabella denominata nazione con tre colonne:

    cod_citta  colore citta    per ogni citta il cod_citta e' univoco ,ad esempio roma e' pari a 1 il problema e' che per un cod_citta la colonna citta puo' assumere valori diversi cioe roma1 roma2 roma3 e cosi via ripetuti anche piu volte

    '1', '5', 'roma'
    '1', '5', 'roma1'
    '1', '12', 'roma3'
    '1', '14', 'roma3'
    '1', '14', 'roma5'
    '1', '22', 'roma5'
    '1', '11', 'roma4'
    '1', '9', 'roma'
    '1', '8', 'roma6'

    a me servirebbe che se a parita' di cod citta (in questo caso1 )e in mancanza di un colore =10 il seguente risultato

    “roma”

     (attenzione potrebbe essere anche roma 1, 2,3, 4 ,5…..)non mi interessa il nome l'importante e' che sia una citta appartenente a quel cod_citta.
    e che venga visualizzato un solo valore ,se invece in tabella dovessi avere un entrata con valore 10 nella colonna roma 

    '1', '5', 'roma'
    '1', '5', 'roma1'
    '1', '10', 'roma3'
    '1', '14', 'roma3'
    '1', '14', 'roma5'
    '1', '22', 'roma5'
    '1', '11', 'roma4'
    '1', '9', 'roma'
    '1', '8', 'roma6'

    a quel punto la selectin risposta dovrebbe assumere un valore False,cioe' nullo:

    “ ”

  • Re: [c#]popolare una datagridview con valori univoci

    21/06/2024 - ric_66 ha scritto:


    SELECT DISTINCT citta FROM nazione WHERE COD_CITTA not in (SELECT COD_CITTA FROM nazione WHERE colore = 10)

    SELECT CITTA FROM NAZIONI 
    WHERE cod_citta not in (SELECT cod_citta FROM NAZIONI WHERE COLORE = 10)
    group by citta;

    trova le differenze…

  • Re: [c#]popolare una datagridview con valori univoci

    24/06/2024 - sihsandrea ha scritto:


    SELECT CITTA FROM NAZIONI WHERE cod_citta not in (SELECT cod_citta FROM NAZIONI WHERE COLORE = 10) group by citta;

    mi ritornerebbe questo

       

    roma
    roma1
    roma3
    roma3
    roma5
    roma5
    roma4
    roma
    roma6
  • Re: [c#]popolare una datagridview con valori univoci

    Si, nelle prove non avevo fatto i conti con città (roma, roma1 ecc..)

    dovresti staccare la città dalla zona (aggiungere il campo zona).

    i dati non sono normalizzati, ottenere quello che cerchi è molto complicato, soprattutto con pochi dati a disposizione.

    hai una tabella città con lo stesso cod_citta?

    Se riesci, aggiungi il campo zona perchè roma è diverso da roma1 e non puoi raggruppare per città. dovresti raggruppare per cod_citta ma nel momento in cui mostri anche la città risulta un record non raggruppabile.

    in alternativa, se hai la tabella città puoi legarla e raggruppare per cod_citta.

    Un altro problema futuro si presenterebbe quando vorrai filtrare per calliano (TN) o calliano (AT), oppure peglio (CO) o peglio (PU)…

    usa il codice città prescindendo dalla provincia e dalla zona.

    https://www.comuni-italiani.it/nomi/omonimi/

  • Re: [c#]popolare una datagridview con valori univoci

    24/06/2024 - sihsandrea ha scritto:


    Si, nelle prove non avevo fatto i conti con città (roma, roma1 ecc..)

    dovresti staccare la città dalla zona (aggiungere il campo zona).

    i dati non sono normalizzati, ottenere quello che cerchi è molto complicato, soprattutto con pochi dati a disposizione.

    hai una tabella città con lo stesso cod_citta?

    Se riesci, aggiungi il campo zona perchè roma è diverso da roma1 e non puoi raggruppare per città. dovresti raggruppare per cod_citta ma nel momento in cui mostri anche la città risulta un record non raggruppabile.

    in alternativa, se hai la tabella città puoi legarla e raggruppare per cod_citta.

    Un altro problema futuro si presenterebbe quando vorrai filtrare per calliano (TN) o calliano (AT), oppure peglio (CO) o peglio (PU)…

    usa il codice città prescindendo dalla provincia e dalla zona.

    https://www.comuni-italiani.it/nomi/omonimi/

    purtroppo sia le entrate nel db che la gestione delle tabelle non e' fatta da me ma da terze persone ,quindi un po' complicato apportare modifiche strutturali al db

  • Re: [c#]popolare una datagridview con valori univoci

    Terze persone un po' scarse…

    Id 1 città roma

    Ed

    Id 1 città roma1

    Ha lo stesso valore di

    Id 1 città milano

    L'uso dell'id serve per non riscrivere n volte la città e dovrebbe essere inibito editare il campo città in quanto prelevato da un elenco città in base al suo id.

    Mo' vedo come si può aggirare l'ostacolo.

  • Re: [c#]popolare una datagridview con valori univoci

    Uhm… il codice città da dove viene fuori?

Devi accedere o registrarti per scrivere nel forum
10 risposte