Visualizzazione dei risultati da 1 a 9 su 9

Discussione: query di esclusione...

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    47

    query di esclusione...

    Buongiorno a tutti!
    Vi scrivo perche' ho questo problema: ho un db Access con una tabella "linea". I campi sono: cod_lingua, cod_linea e des_linea.

    Esempio:
    000 LINEA1 Linea uno
    000 LINEA2 Linea due
    001 LINEA2 Line two
    000 LINEA3 Linea tre
    000 LINEA4 Linea quattro
    000 LINEA5 Linea cinque

    dove 000 è l'Italiano e 001 Inglese.

    Ora, a me servirebbe una query che mi tiri fuori tutte quelle linee che non sono ancora presenti in lingua inglese. Nell'esempio sopra io dovrei vedere, grazie a questa query, solo le linee 1, 3, 4 e 5.

    Come si fa? :master:
    Grazie mille!

  2. #2
    Quindi l'elemento comune tra l'italiano e l'inglese è il dato nel campo COD_LINEA, giusto?
    Fai una query "... WHERE cod_lingua = '000'".
    Durante la lettura del recordset (con un ciclo) rifai una ulteriore query sulla tabella selezionando "... WHERE cod_linga = '001' and cod_linea = '" & primoRecordset("cod_linea") & "'"
    Apri un secondo recordset e se non è EOF allora vuol dire che c'è il corrisponente in inglese, altrimenti no.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    47
    Ciao Mems,
    grazie innazi tutto per la tua celere risposta!
    Ora provo la tua query, intanto ti confermo che sì, è cod_linea l'elemento in comune per le 2 lingue.
    L'unica cosa: tu hai scritto " primoRecordset("cod_linea") ". Che significa? nel senso: cosa ci devo scrivere al posto di "primoRecordset"?

    grazie ciao!

  4. #4
    Faccio prima con un esempio.
    In pratica avrai due recordset annidati, il primo che prende quelli con 000 e il secondo che prendi quelli con 001 dove il cod_lingua è uguale al campo cod_linea letto dal primo recordset.
    codice:
    set conn ...
    conn.open ...
    
    sql1 = "SELECT * FROM tabella WHERE cod_lingua = '000'"
    set rs1 = conn.execute(sql1)
    if not rs1.eof then
      do until rs1.eof
    
      cod_linea = rs1("cod_linea")
      sql2 = "SELECT * FROM tabella WHERE cod_lingua = '001' AND cod_linea = '" & cod_linea & "'"
        set rs2 = conn.execute(sql2)
        if rs2.eof then
        response.write "000 - " & cod_linea & " - " & rs1("des_linea") & £"
    "
        end if
        rs2.close
       set rs2 = nothing
    
      rs1.moveNext
      loop
    end if
    
    rs1.close
    set rs1 = nothing
    
    conn.close
    set conn = nothing

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    47
    Funziona tutto perfettamente!
    Grazie mille!

  6. #6
    E l'ho scritto senza testarlo

  7. #7
    Eh eh eh, bastava semplicemente:

    codice:
    SQL = "SELECT * FROM tabella WHERE cod_lingua = '000' AND cod_linea NOT IN (SELECT cod_linea FROM tabella WHERE cod_lingua = '001')"
    con un solo recordset.......


    Ecco l'output


    E l'ho testato senza scriverlo!




    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    47
    Caro teorema,
    ti ringrazio dell'aiuto e questo tipo di comando (NOT IN, che non conoscevo) lo conserverò con cura per i lavori futuri!
    Grazie mille del prezioso consiglio!

  9. #9
    De nada, buon lavoro.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.