Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Aiuto per QUERY complessa.

    Ciao a tutti,

    devo applicare un listino a delle bolle, fin qui nulla di difficile se non che le bolle non sono inserite volta per volta ma vengono importate da un file di testo di volta in volta e si parla di parecchie decine di record.

    la tabella listino è strutturata così:

    >idazienda
    >da
    >a
    >unita_misura (può essere colli o kg, o paia o mc)

    la tabella bolle è strutturata così:

    >idazienda
    >colli
    >kg
    >mc
    >paia

    la select deve essere:

    select
    bolle.kg,
    bolle.colli,
    bolle.mc,
    bolle.paia
    from
    bolle,listino
    where
    bolle.kg (o colli o paia o mc dipende da unita_misura della tab listino) between da and a

    il mio problema è questo, come faccio a prendere il valore esatto dalla tabella bolle?

    non so come fare, mi sto qualcuno saprebbe darmi qualche suggerimento?

    grazie

  2. #2
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    intanto sei sul forum sbagliato..

    select
    bolle.kg,
    bolle.colli,
    bolle.mc,
    bolle.paia
    from
    bolle,listino
    LEFT JOIN bolle ON (listino.unita_misura = bolle.idazienda)
    where
    bolle.kg between da and a

    MA, c'è un grosso MA..
    il valore di unita_misura DEVE "fare scopa" con i valori di bolle.
    SEMPRE CHE IO ABBIA CAPITO QUELLO CHE DEVI FARE
    rileggendo non va bene.
    non si capisce COSA devi ottenere.
    nella tabella bolle cosa ci sta scritto?
    io la farei tipo:
    id_bolle
    nome_bolla
    i valori di questa tabella sono:
    1 kg
    2 colli
    3 mc
    4 paia
    a questo punto la query di sopra è ok..
    dove lo metti il valore dell'unità di misura?
    cioè se una cosa è 10 mc o sono 25 colli come lo sai?
    io lo metterei sulla tabella principale ovviamente

  3. #3
    provo a spiegarmi

    il cliente [a] ha un listino che prevede il pagamento in base ai colli e fa n spedizioni, quindi la query è where colli = da a
    il cliente [b] ha un listino che prevede il pagamento in base ai kg e fa n spedizioni, quindi la query è where kg = da a

    e così via per paia e mc.

    la tabella bolle ha 4 campi colli, kg, mc e paia che ho dovuto mettere per forza perché i file che importo li prevedono.

    io ho il problema di fare un'interrogazione nel db che di volta in volta e associa il campo esatto della tabella bolle con il campo unita_di misura del listino.

    in pratica come hai intuito tu devo fare scopa ma non so come fare.

    ho postato qui e non nel forum database perché credo che una query in puro sql non esista, ma potrei sbagliarmi.

    per ora continuo ad e a fare

  4. #4
    provo a spiegarmi meglio:

    tab.listino
    ----------------------------
    idazienda :da :a :unita_misura
    ----------------------------
    1 :0 :5 :colli
    2 :0 :500 : kg
    3 :0 :5 : mc
    4 :0 :100 paia

    tab.bolle
    --------------------------------------
    idazienda :colli :kg :mc paia
    --------------------------------------
    1 :3 :20 :0 :0
    3 :1 :4 :1 :0
    2 :2 :300 :3 :50

    io devo fare una query che mi unisce le due tabelle, solo che il valore del campo unita_misura dovrà essere il filtro o di colli, o di kg o di mc o di paia.


  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    domanda scema: ma la tabella bolle, non dovrebbe avere 3 valori su 4 uguali a 0, o sbaglio?
    se sbaglio: perchè ha vari valori diversi da 0?

  6. #6
    perchè le bolle vengono importate da un file di testo e ci sono anche quei valori che DEVO per forza importare, ma a me a seconda delle aziende ne serve solo uno.

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    fai prima una query sulla tabella listino e recupera il tipo di unità di misura
    dopo passi il valore che hai preso prima come campo della seconda query
    in pseudo codice
    Codice PHP:
    $id_azienda 1// questo lo renderai dinamico
    $query_unit "SELECT unita_misura FROM tab.listino WHERE id_azienda = $id_azienda";
    // esegui la query e recuperi il valore dell'unità di misura
    $unit $risultato_della_query['unita_misura'];
    $query_fattura "SELECT $unit FROM tab.bolle WHERE id_azienda = $id_azienda";
    // fai il resto 
    questo se ho colto il tuo problema

  8. #8
    si hai colto è un'ottima cosa a cui io non avevo assolutamente pensato.

    faccio alcune prove e ti dico se riesco a far bene.

    grazie!

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.