Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838

    Controllo di una mia espressione SQL ... ???

    Ciao.

    Mi potreste dire se una stringa SQL che vi scrivo è giusta?

    Io ho la seguente tabella "attivita" con i seguenti campi:
    - Stato (tipo stringa, valori possibili "Rinviata" o "Eseguita");
    - CausaleRinvio (tipo stringa, valori possibili "Causa Forza Maggiore" "Sconosciuto" "Motivazioni Legali");
    - Controllo (tipo stringa, valori possibili "24 ore OK" "OK 1200" "OK 2400" "OK 3600", in generale "OK xxxx", dove xxxx è un numero di 3 o 4 cifre).

    Dovrei eseguire la seguente interrogazione: Controllare/Trovare i dati che hanno stato "Rinviata" e, CausaleRinvio uguale a "Causa Forza Maggiore" o "Motivazioni Legali" e, Controllo uguale a "24 ore OK" o "OK xxxx" dove xxxx è un numero di 3/4 cifre.

    Io ho 'tradotto' l'interrogazione sopra in:

    SELECT *
    FROM attivita
    WHERE Stato='Rinviata' AND (CausaleRinvio='Causa Forza Maggiore' OR CausaleRinvio=Motivazioni Legali') AND (Controllo='24 ore OK' OR Controllo LIKE 'OK ____');

    E` giusto secondo voi il codice scritto sopra?

    Ciao e Grazie in anticipo.

    Grejo
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  2. #2
    una query e' giusta quando non da errori e quando estrae i record attesi.

    nel merito della tua sara' giusta, ma ottimizzabile:

    codice:
    SELECT *
    FROM attivita
    WHERE Stato='Rinviata' 
    AND (CausaleRinvio = 'Causa Forza Maggiore' OR CausaleRinvio = 'Motivazioni Legali') 
    AND (Controllo='24 ore OK' OR Controllo LIKE 'OK ____');
    in pratica: il campo controllo lo prendi in ogni caso e quindi puoi ometterlo. I campo causa rinvio ha tre valori possibili... invece di cercarne due escludine uno.

    codice:
    SELECT *
    FROM attivita
    WHERE Stato = 'Rinviata' 
    AND CausaleRinvio != 'Sconosciuto'
    fa le stesse cose con meno codice.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    Purtroppo devo fare per forza questi controlli, il motivo è che mi è stato detto che in futuro aumenterano i possibili valori dei 2 campi (CausaleRinvio e Controllo), ma per questa interrogazione/uso rimangono importanti solo questi valori.

    Comunque, è giusto il codice così scritto?

    Ciao e Grazie.

    Ivan
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  4. #4
    Originariamente inviato da Grejo
    Purtroppo devo fare per forza questi controlli, il motivo è che mi è stato detto che in futuro aumenterano i possibili valori dei 2 campi (CausaleRinvio e Controllo), ma per questa interrogazione/uso rimangono importanti solo questi valori.

    Comunque, è giusto il codice così scritto?

    Ciao e Grazie.

    Ivan
    per il codice vale quanto detto prima.

    per l'ottimizzazione della tabella poiche' la CausaleRinvio e' una stringa ripetuta e forse modificabile converrebbe fare una tabella "causali" in modo da scrivere una volta sola ed in modo "certo", cioe' senza errori che ne possano poi inficiare la ricerca, e riportare solo l'id della causale nel record. Per il campo controllo e' inutile scrivere in ogni record "OK" basta il solo numero. Se non e' OK scrivici 0 (zero).

    Prima si ottimizzano le tabelle "poi" si fanno le query.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    Ok ... grazie mille per i consigli ... !!!

    Ciao e Grazie ancora.

    Grejo.
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

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.