[RISOLTO] query con campi non presente in tabella

di il
6 risposte

[RISOLTO] query con campi non presente in tabella

Buongiorno a tutti!

questo è lo schema delle relazioni:
http://s000.tinyupload.com/download.php?file_id=54311363617502425610&t=5431136361750242561027784
(non riesco a fare l'upload di immagini).

scopo: vorrei creare una query per calcolare la [quantità disponibile] di ogni [articolo].
[quantità ordinata]=[Tconsegne_dettagli].[quantità arrivo]-[Tvendite_detttagli].[quantità venduta]

problema: vedo solo gli articoli presenti sia nella tabella [Tconsegne_dett] che nella tabella [Tvendite_dett], ovvero posso calcolare la quantità disponibile solo dopo aver venduto almeno un esemplare di quell'articolo.

------
ho provato diverse soluzioni ma niente (iif, query accodamento, aggiornamento, unione ecc vagliando diverse ipotesi).

tempo fa mi era stato suggerito di cambiare la normalizzazione delle tabelle "fondendo" le tabelle consegna e vendita in una sola "movimenti" con un campo entrata/uscita.
credendo di non poter gestire un sistema cassa in quel modo non ho seguito il consiglio.
comunque, ricordandomi di questo, ho provato a creare un altro database (importando tutto) dove ho modificato le tabelle seguendo il consiglio. mi trovo così con due query una che seleziona solo i record con valore Entrata e una con i valori USCITa, ma anche lì non sono riuscito a risolvere il problema.

6 Risposte

  • Re: [RISOLTO] query con campi non presente in tabella

    denial ha scritto:


    ...
    scopo: vorrei creare una query per calcolare la [quantità disponibile] di ogni [articolo].
    [quantità ordinata]=[Tconsegne_dettagli].[quantità arrivo]-[Tvendite_detttagli].[quantità venduta]

    problema: vedo solo gli articoli presenti sia nella tabella [Tconsegne_dett] che nella tabella [Tvendite_dett], ovvero posso calcolare la quantità disponibile solo dopo aver venduto almeno un esemplare di quell'articolo.

    ------
    ho provato diverse soluzioni ma niente (iif, query accodamento, aggiornamento, unione ecc vagliando diverse ipotesi).
    Soluzioni quelle? Mah. E' una query di selezione con campi calcolati ed eventualmente con raggruppamenti.
    Comunque, ad intuito, prova ad impostare nella query una LEFT JOIN tra le Consegne e le Vendite. Quando imposti le formule nei campi calcolati usa IsNull (rettifica, vedi sotto) per impostare a zero i valori di Vendite (che non ci sono) e riuscire comunque ad eseguire la sottrazione.
    Quando abbozzi qualcosa di più "concreto", se continuano ad esserci difficoltà, posta la query in SQL e proseguiamo.

    Errore: non IsNull ma Nz. Scusa.
  • Re: [RISOLTO] query con campi non presente in tabella

    denial ha scritto:


    tempo fa mi era stato suggerito di cambiare la normalizzazione delle tabelle "fondendo" le tabelle consegna e vendita in una sola "movimenti" con un campo entrata/uscita.
    Quando vuoi segnalare un suggerimento passato, ti consiglio di descriverlo dettagliatamente, oppure citi il link corrispondente al thread interessato e specifichi anche l'intervento in discussione che spiega. Io ricordo vagamente una tabella Operazioni e una DettagliOperazionii. Quest'ultima con i seguenti campi:
    IDDettaglio (contatore, chiave primaria)
    IDOperazione (numerico)
    IDArticolo (o BARCODE) (numerico)
    PrezzoUnitario
    Quantità
    E/U (ossia Entrata/Uscita)

    ...beh, non ricordo bene se la tabella era fatta così. In sostanza devi lavorare su questa tabella. Se usi il campo E/U devi trovare una opportuna espressione che riconosca che Quantità in Entrata significa +, Quantità in Uscita significa -. Se non vuoi usare il campo E/U, devi aver cura di scrivere + o - dentro il campo Quantità.
    Una query sulla sola tabella DettagliOperazioni, con raggruppamenti e Totali (devi usare il tasto Totali in visualizzazione struttura query), dovrebbe risolvere.
  • Re: [RISOLTO] query con campi non presente in tabella

    Philcattivocarattere ha scritto:


    Soluzioni quelle? Mah. E' una query di selezione con campi calcolati ed eventualmente con raggruppamenti.
    Comunque, ad intuito, prova ad impostare nella query una LEFT JOIN tra le Consegne e le Vendite. Quando imposti le formule nei campi calcolati usa IsNull (rettifica, vedi sotto) per impostare a zero i valori di Vendite (che non ci sono) e riuscire comunque ad eseguire la sottrazione.
    Quando abbozzi qualcosa di più "concreto", se continuano ad esserci difficoltà, posta la query in SQL e proseguiamo.

    Errore: non IsNull ma Nz. Scusa.
    ho elencato in fretta quello che avevo provato per dire che, prima di postare qui, ho provato da solo a risolvere il problema. tra queste non soluzioni c'è anche quella proposta da te con isnull. ora cerco di capire cosa sia Nz e poi provo.

    @osvaldo: ok provo a fare in modo che "entrata" sia additivo e "uscita" sottrattivo. provo anche questa soluzione e poi aggiorno.

    intanto grazie della risposta a entrambi!
  • Re: [RISOLTO] query con campi non presente in tabella

    denial ha scritto:


    Philcattivocarattere ha scritto:


    ...
    Comunque, ad intuito, prova ad impostare nella query una LEFT JOIN tra le Consegne e le Vendite. Quando imposti le formule nei campi calcolati usa IsNull (rettifica, vedi sotto) per impostare a zero i valori di Vendite (che non ci sono) e riuscire comunque ad eseguire la sottrazione.
    ...
    Errore: non IsNull ma Nz. Scusa.
    ... tra queste non soluzioni c'è anche quella proposta da te con isnull. ora cerco di capire cosa sia Nz e poi provo.
    Sono proprio due cose separate, tanto che mi sono reso conto di aver sbagliato clamorosamente proprio provando ad ottenere qualcosa di simile. Se il valore di [Vendite] non esiste non riesci ad eseguire la sottrazione che, a sua volta, restituirebbe un valore Null
    Nz([campo];0)
    permette di sostituire il null con 0 (in questo caso) e la sottrazione tra Consegne e Vendite dà il risultato voluto.
  • Re: [RISOLTO] query con campi non presente in tabella

    Mitico! funziona con Nz! era quello che cercavo (senza query union, query accodamento e poi union di nuovo! )

    invece per quanto riguarda il "problema" della normalizzazione, ora che ho il tarlo della monotabella "movimenti" vorrei capire quale soluzione è migliore e perchè, ovvero se la monotobella movimenti o se vanno bene anche le due tabelle consegne e vendite.
  • Re: [RISOLTO] query con campi non presente in tabella

    denial ha scritto:


    invece per quanto riguarda il "problema" della normalizzazione, ora che ho il tarlo della monotabella "movimenti" vorrei capire quale soluzione è migliore e perchè, ovvero se la monotobella movimenti o se vanno bene anche le due tabelle consegne e vendite.
    Per questo devi aprire una nuova discussione, come da Regolamento.

Devi accedere o registrarti per scrivere nel forum
6 risposte