Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    [ACCESS] Query per selezionare più righe

    Ho una tabella fatta così:

    codice descrizione valore
    10 prima 150
    10 seconda 134
    10 terza 199
    10 quarta 121
    11 prima 88
    11 seconda 34
    11 terza 198
    11 quarta 144

    Ad esempio quello che voglio fare è selezionare tutti i codici che soddisfino queste condizioni:
    prima = 150 e terza = 199
    In questa caso dovrei avere come risultato il codice 10.
    Se però faccio così:

    SELECT codice FROM tabella WHERE valore = 150 e valore = 199

    non funziona perchè la stessa riga non potrà avere 2 valori uguali.

    Anche facendo così:

    SELECT codice FROM tabella WHERE (descrizione = prima AND valore = 150) AND (descrizione = terza AND valore = 199)

    Non funziona per lo stesso motivo.

    Come potrei fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315

    Re: [ACCESS] Query per selezionare più righe

    non funzione perche invece di AND devi usare OR

    prova cosi:

    codice:
    SELECT 
    tabella.codice 
    FROM tabella 
    WHERE 
    (descrizione = 'prima' AND valore = 150) or 
    (descrizione = 'terza' AND valore = 199)
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Così ovviamente funziona, ma il mio problema è proprio che le 2 condizioni devono essere entrambe vere, mentre così basta che una delle 2 sia vera che risulta vera.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    entrambe vere, mentre così basta che una delle 2 sia vera che risulta vera.
    ...e' vero!

    ok.

    non sono pratico di access, ma mi sembra che permette l'utilizzo delle subquery

    prova questo

    codice:
    SELECT 
    tabella.codice 
    FROM tabella
    where descrizione = 'terza' AND valore = 199
    and tabella.codice in (SELECT descrizione = 'prima' AND valore = 150)
    ciao... facci sapere

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    Prendi tutte le righe ma estrai i valori distintiç utilizzi la clausola SELECT DISTINCT
    codice:
    SELECT DISTINCT codice 
    FROM tabella 
    WHERE 
    (valore = 150) or 
    (valore = 199)

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    Originariamente inviato da Z0rn
    Prendi tutte le righe ma estrai i valori distintiç utilizzi la clausola SELECT DISTINCT
    codice:
    SELECT DISTINCT codice 
    FROM tabella 
    WHERE 
    (valore = 150) or 
    (valore = 199)
    No Zorn, non e' esatto quello che dici, aasmdaa ha bisogno dei codice che hanno sia valore 150 che 199... cioe devono essere presenti entrambi i valori, e con la distinct questo non avverrebbe

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho risolto utilizzando la soluzione SELECT IN come indicato da delphi (Grazie 1000!)
    In pratica faccio tante SELECT quanti sono i filtri da controllare.

    La soluzione indicata da Z0rn invece è sempre un OR e non è quello che cercavo.

    La velocità di esecuzione con 6 filtri (il max che ho) è ancora buona su 408500 caratteristiche circa.

    Un'altra soluzione forse funziona è quella di utilizzare una query a campi incrociati, che però proverò non appena ho un po' di tempo.

    Intanto questa funziona!

    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    225
    No scusate, d'accordo che hai risolto, ma io non ho capito. Tu hai una tabella
    codice:
    codice descrizione valore
    10     prima       150
    10     seconda     134
    10     terza       199
    10     quarta      121
    11     prima        88
    11     seconda      34
    11     terza       198
    11     quarta      144
    di questo tipo e vuoi CODICE nel caso in cui CODICE sia uguale per due righe trovate in modo che descrizione="prima" e valore = 150, oppure descrizione ="terza" e valore = 199?
    Se e' cosi' mi sembra un po' troppo arzigogolato, potrebbe esserci qualcosa che non funziona sulle strutture dati, no?

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Non oppure ma e:

    Mi serve il codice che abbia prima = 150 E terza = 199

    La struttura dei dati non la gestisco io direttamente ma ti assicuro che pur essendo complessa è corretta.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.