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

Discussione: query sql

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    query sql

    salve ragazzi una tabella del mio db che possiede i seguenti campi:
    id_lot, jobs, descriz_job, chiusura
    1 A TPO 1
    2 A CPO 1
    3 B ZLS 1
    4 A CTP 0
    5 B TPO 1
    6 B CPO 1
    vorrei che il risultato della query mi darebbe tutti i JOB che hanno tutti il campo CHIUSURA ="1" ,
    in questo caso il risultato dovrebbe essere "jobs = B" che in questo caso tutti i record del job B hanno chiusura uguale a 1.
    saluti

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    - Raggruppi per JOB con il minimo di CHIUSURA
    - Filtri i soli 1 al campo chiusura

    .

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao, secondo me puoi controllare se per ogni JOB non esiste un record in tabella con CHIUSURA pari a 0. Successivamente esegui il raggruppamento per JOB.

    F.

  4. #4
    Prova così:

    SELECT DISTINCT CHIUSI.JOBS FROM
    (SELECT TB_CHIUSURA.jobs
    FROM TB_CHIUSURA
    WHERE CHIUSURA=1) CHIUSI LEFT JOIN (SELECT TB_CHIUSURA.jobs
    FROM TB_CHIUSURA
    WHERE CHIUSURA=0) APERTI ON CHIUSI.JOBS=APERTI.JOBS
    WHERE APERTI.JOBS IS NULL

    Ciao
    Mik

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Non è più semplice così?

    SELECT DISTINCT JOBS
    FROM TAB T
    WHERE NOT EXISTS (SELECT 1
    FROM TAB T2
    WHERE T2.JOBS = T.JOBS
    AND CHIUSURA = 0);

    O mi sono perso qualche passaggio?

    F.

  6. #6
    Quote Originariamente inviata da Fede_91 Visualizza il messaggio
    Non è più semplice così?

    SELECT DISTINCT JOBS
    FROM TAB T
    WHERE NOT EXISTS (SELECT 1
    FROM TAB T2
    WHERE T2.JOBS = T.JOBS
    AND CHIUSURA = 0);

    O mi sono perso qualche passaggio?

    F.
    Personalmente, preferisco utilizzare poco il comando "NOT EXISTS" perchè a livello di performance spesso da dei risultati poco accettabili
    A parte questa considerazione, il sql è corretto

    Ciao
    Mik

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Anche a me non piace la EXISTS

    Pero mi viene un dubbio,

    i valori del campo CHIUSURA possoni essere solamente 1 oppure 0 ??

    è un formato testo ?? ( ci hai scritto CHIUSURA ="1" )
    oppure un booleano ( si/no ) ? ( avrebbe dovuto essere -1 )
    oppure si tratta di un banale numerico ??


    Quanti dubbi su una domanda apparentemente semplice e scontata


    .

  8. #8
    non dappertutto o booleani sono 0 e -1. in m$sql ad esempio sono 0 e 1. per questo motivo 84morena avrebbe dovuto dire - come da regolamento - con quale db sta lavorando. comunque, per essere tranquilli, si può lavorare solo sullo 0 (che è zero dappertutto), per cui invece di testare la condizione = True si può testare la condizione not = False

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    ragazzi grazie tutti per la disponibilità...
    si è un booleano
    la soluzione più semplice è chiara è quella di fede_91 (x me)
    anche se condivido il fatto di non utilizzare exists.

  10. #10
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non è che voglio insistere, ma solo per "conversare"
    io farei cosi:
    codice:
    SELECT TAB.JOBS
    FROM TAB
    GROUP BY TAB.JOBS
    HAVING Max(TAB.CHIUSURA)<>0
    Poi va adattata al DB ( che è ancora segreto )
    eventualmente si sostituisce il Max con Min

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.