Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39

    [VB6] Query di selezione

    Ho una tabella come segue:

    Campo1 Campo2 Quantita
    101...........200..........1
    101...........250..........3
    250...........123..........1
    250...........105..........1
    300...........510..........1
    400...........605..........5

    Vorrei che facendo una query con ricerca nel campo1 del codice 101 mi venga fuori che :
    101.........200..........1
    101.........250..........3
    250.........123..........1
    250.........105..........1
    visto che il codice 250 del campo2 è presente anche nel campo1 con altri valori.
    E' fattibile tutto ciò?

    Grazie infinite.
    Otti

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Scusami ma non ho trovato quale fa al caso mio.
    Di solito le query le faccio (x quelle complesse con le inner join utilizzo access ) ma non ho ancora capito per questo specifico caso.

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    guarda la query che ti ho postato.

    Riguardo ad Access, va bene per iniziare, ma presto o tardi ti devi studiare il SQL altrimenti rischi di bloccarti davanti a query banali come questa.

    Quasi ogni query è un 'caso specifico' a sé, ed è proprio per questo che importante conoscere le basi del linguaggio per poi saper costruire le query.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Scusa non mi sono spiegato.
    Io vorrei che facendo questa query:

    select campo1,campo2,quantita
    from tabella
    where campo1=101

    visto che 101 è l'ID dell'articolo che devo cercare
    siccome in campo2 c'è un valore (250) che compare anche in campo1 la query mi restituisse l'intero elenco. Oltre al valore 250 ce ne potrebbero essere "n"

    Si tratta di un programma di magazzino.
    L'articolo 101 è composto da più pezzi e ho segnato questi pezzi in una tabella.
    Ma se uno di questi pezzi (il 250) è a sua volta composto da altri pezzi; come faccio (visto che parto conoscendo il solo dato 101) a comporre l'intero elenco?

    Ciao Otti

  6. #6
    devi usare una self-join. in pratica devi fare come fossero 2 tabelle, ma invece di (esempio)

    ... from tabella1 t1 JOIN tabella2 t2 on t1.campox=t2.campoy ...

    devi fare

    ... from tabella1 t1 JOIN tabella1 t2 on t1.campox=t2.campoy ...


  7. #7
    Originariamente inviato da optime
    devi usare una self-join. in pratica devi fare come fossero 2 tabelle, ma invece di (esempio)

    ... from tabella1 t1 JOIN tabella2 t2 on t1.campox=t2.campoy ...

    devi fare

    ... from tabella1 t1 JOIN tabella1 t2 on t1.campox=t2.campoy ...

    occhio però che a fare la join rischia di vedere le righe moltiplicate
    in questo esempio visto che la seconda riga ha il valore 250 nel campo2
    verrebbero fuori 3 righe con i valori della seconda

  8. #8
    io proverei così

    select campo1,campo2,quantita
    from tabella
    where campo1=101 or campo1 in (select campo2 from tabella where campo1 = 101)

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Ho provato con la self joint. In effetti non ci avevo pensato
    però funziona corretamente ad un solo livello; cioè con un articolo che è formato da un altro articolo "Composto"; ma se la cosa si ripetesse (secondo livello) la query non funzionerebbe più.
    Ho optato per fare un ciclo di ricerca infinito così da trovare TUTTI gli articoli componenti il "Padre" articolo.
    Appena ho tempo provo e faccio sapere.

    Grazie infinite per i consigli.

    Otti

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Max Mercury
    io proverei così

    select campo1,campo2,quantita
    from tabella
    where campo1=101 or campo1 in (select campo2 from tabella where campo1 = 101)
    Confermo.

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.