+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Capire se tutti i record di un dato campo hanno lo stesso valore

  1. #1
    L'avatar di qweasdzxc
    qweasdzxc non è in linea Scolaretto
    Post
    207

    Capire se tutti i record di un dato campo hanno lo stesso valore

    Salve faccio un esempio:

    tabella commissioni

    id progressivo lavorato articolo
    1 0001 si art1
    2 0001 si art2
    3 0001 si art3
    4 0002 si art1
    5 0002 no art2

    Vorrei tramite una query ottenere il risultato 1 Il progressivo 0001 ha tutti i capi lavorato con valore si e il progressivo 0002 non ha tutti i campi col valore si

    Ho fatto ricerche ma nisba. grazie per l'aiuto

  2. #2
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,021
    Rispondendo 'esattamente' alla domanda così come l'hai posta, mi viene da risponderti:

    seleziona i record che hanno lavorato = 'no' e sai già quanti sono.

    Secondo me sei stato un po' troppo criptico.

  3. #3
    L'avatar di +m+
    +m+
    +m+ non è in linea Scribacchino
    Post
    922
    fai un group by con having=1. attenzione ad eventuali valori null da prefiltrare con where

  4. #4
    L'avatar di qweasdzxc
    qweasdzxc non è in linea Scolaretto
    Post
    207
    Innanzitutto grazie a tutti per il tempo dedicatomi.

    Non riesco. Sicuramente ho omesso dati importanti. Io voglio ottenere delle righe in cui compaia il numero di progressivo delle lavorazioni con finito=ok.

    HO provato i vostri consigli ma nulla. OVVIAMENTE sbaglio io.
    codice:
    Ado.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=" & INIRead("config.ini", "SETTINGS", "nIP") & ";Database=pos; User=" & INIRead("config.ini", "SETTINGS", "nUsr") & ";Password=" & INIRead("config.ini", "SETTINGS", "nPass") & ";Option=3;"
     
    Ado.CommandType = adCmdText
    
    Ado.RecordSource = "SELECT procommissione,finito FROM commissioniarticoli WHERE finito='OK'  GROUP BY procommissione HAVING finito=1"
    
    
    Ado.Refresh
    Set MSHFlexGrid1.DataSource = Ado
    
    
    
    MSHFlexGrid1.Refresh
    
    Ado.Recordset.Close
    ho dimenticato a dire che nel campo FINITO le possibilita' sono 3 OK START ON

    GRAZIE ANCORA


    AGGIUNGO - Mi serve tradurre in query: selezionami le righe della tabella commissioni raggruppando per progressivo dove tutte le righe del campo finito sono su ok
    Ultima modifica di qweasdzxc; 04-05-2015 12:00 

  5. #5
    L'avatar di +m+
    +m+
    +m+ non è in linea Scribacchino
    Post
    922
    Ci sono vari approcci, e dipende anche dall' RDBMS che usi, e dalla relativa versione
    Questo ad esempio (su mariadb 10) diventa una subquery MATERIALIZATED, su mysql <5.5 non è un granchè efficiente.
    codice:
    select distinct(progressivo) from commissioniarticolo where
    progressivo not in (select progressivo from commissioniarticolo where lavorato='no' group by progressivo)
    L'ultimo group by dipende dalla cardinalità, dall'esistenza di indici e relativa selettività.
    In generale è meno efficiente rispetto a senza, l'ho messo perchè (immagino) sia più semplice da capire per i non molto esperti

  6. #6
    L'avatar di qweasdzxc
    qweasdzxc non è in linea Scolaretto
    Post
    207
    +m+ che dire... non posso fare altro che ringraziarti! Funziona! OT(per adesso è pure un periodaccio e la concentrazione è a zero GRAZIE MILLE)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi