Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [MariaDB] Problema con NOT EXIST

    ciao!

    ho un problema con NOT EXIXTS.
    in pratica estraggo tutti gli articoli che hanno dt_tipo_fk = 1 (più altre clausole).
    però non devo estrarre quelli che hanno anche dt_tipo_fk = 7.
    ho provato cosi:
    codice:
        SELECT 
        magazzino_codice, 
        magazzino_colore_codice,
        magazzino_taglia, 
        magazzino_descrizione_ita, 
        magazzino_colore_descrizione_ita,
        tipo_descrizione,
        dtr_qta, 
        (dtr_prezzo * dtr_qta) sum_imp, 
        dtr_sconto,
        dtr_sconto_imp,
        (dtr_prezzo - (dtr_prezzo * dtr_sconto) / 100 - dtr_sconto_imp) sum_imp_netto,
        dt_invio
        FROM st_documenti_righe
        INNER JOIN st_documenti_testate ON dt_id = dtr_testata_fk
        INNER JOIN st_magazzino ON magazzino_nmat = dtr_articolo_fk
        INNER JOIN st_documenti_tipi ON tipo_id = dt_tipo_fk
        WHERE magazzino_negozio_fk = 'N050' 
        AND dt_negozio_fk = 'N050' 
        AND magazzino_collezione = 'C195'
        AND dt_tipo_fk = 1 
        AND dt_chiuso = 1
        AND CAST(dt_creazione AS DATE) BETWEEN '2019-08-26' AND '2019-09-02'
        AND NOT EXISTS (
            SELECT * FROM st_documenti_righe sdr2
            INNER JOIN st_documenti_testate sdt2 ON sdt2.dt_id = sdr2.dtr_testata_fk
            INNER JOIN st_magazzino stm2 ON stm2.magazzino_nmat = sdr2.dtr_articolo_fk
            WHERE sdt2.dt_negozio_fk = 'N050'
            AND stm2.magazzino_negozio_fk = 'N050' 
            AND sdt2.dt_tipo_fk = 7
            AND sdt2.dt_chiuso = 1
            AND stm2.magazzino_codice = magazzino_codice
            AND stm2.magazzino_colore_codice = magazzino_colore_codice
            AND stm2.magazzino_taglia = magazzino_taglia
        )
        ORDER BY magazzino_codice, magazzino_colore_codice
    non ottengo errori, però ho sempre zero records.
    invece ne dovrei avere 9, 10 meno lo "stornato".
    la subselect ne estrae solo 1, e presa da sola è corretta.

  2. #2
    non capisco: già gli dici dt_tipo_fk = 1 perché devi escludere dt_tipo_fk = 7 ? è implicito

    se ti dico portami le mele, mica debbo dirti di NON portarmi le pere...

  3. #3
    mi spiego meglio.

    sono righe documenti.
    tipo 1 vendita.
    tipo 7 reso.

    quando vado a cercare i tipo 1, devo levare eventuali articoli che hanno anche tipo 7.

    in sostanza le vendite che hanno un reso non devono comparire.
    quindi se ho venduto ARTICOLO1 e ARTICOLO2, ma mi hanno reso ARTICOLO2 io avrò nella tabella:
    codice:
    ARTICOLO TIPO
    ARTICOLO1 1
    ARTICOLO2 1
    ARTICOLO2 7
    dalla query finale mi dovà comparire solo una riga con ARTICOLO1.

  4. #4
    anzi, in realtà ci sto pensando adesso, è anche errato il ragionamento che ho fatto di partenza.

    in pratica non dovrei levare le righe, ma dovrei diminuire la quantità.
    quindi avendo questo:
    codice:
    ARTICOLO TIPO QTA
    ARTICOLO1 1       1
    ARTICOLO2 1       2
    ARTICOLO2 7       1
    dovrebbe uscirmi:
    codice:
    ARTICOLO TIPO QTA
    ARTICOLO1  1        1
    ARTICOLO2  1        1

  5. #5
    cos'è, il report di un ordine? perché far sparire i resi? io li documenterei comunque...

  6. #6
    Quote Originariamente inviata da optime Visualizza il messaggio
    cos'è, il report di un ordine? perché far sparire i resi? io li documenterei comunque...
    di vendite più che di ordini.

    così mi hanno chiesto.
    sostanzialmente possono scegliere quali tipi di documenti visualizzare.
    se visualizzano solo i documenti di vendita devono essere al netto dei resi.
    non mi sono messo a discutere con chi me lo ha richiesto......

  7. #7
    allora fai una SUM leggendo sia vendite che resi -- esce una riga sola

  8. #8
    Quote Originariamente inviata da optime Visualizza il messaggio
    allora fai una SUM leggendo sia vendite che resi -- esce una riga sola
    si, ero partito da una analisi errata, dopo mi è venuto in mente che dovrei risolvere con una SUM.

  9. #9

  10. #10
    allora, avrei due problemi con la SUM:
    codice:
    SELECT 
    magazzino_codice, 
    magazzino_colore_codice,
    magazzino_taglia, 
    magazzino_descrizione_ita, 
    magazzino_colore_descrizione_ita,
    tipo_descrizione,
    dt_invio,
    SUM(dtr_qta)
    FROM st_documenti_righe
    INNER JOIN st_documenti_testate ON dt_id = dtr_testata_fk
    INNER JOIN st_magazzino ON magazzino_nmat = dtr_articolo_fk
    INNER JOIN st_documenti_tipi ON tipo_id = dt_tipo_fk
    WHERE magazzino_negozio_fk = 'N050' 
    AND dt_negozio_fk = 'N050' 
    AND magazzino_collezione = 'C195'
    AND dt_tipo_fk IN(1, 7)
    AND dt_chiuso = 1
    AND CAST(dt_creazione AS DATE) BETWEEN '2019-08-26' AND '2019-09-02'
    GROUP BY 
    magazzino_codice, 
    magazzino_colore_codice,
    magazzino_taglia
    ORDER BY 
    magazzino_codice, 
    magazzino_colore_codice
    1)
    le quantità sono salvate sempre in positivo, anche i resi.
    così facendo l'articolo che ha un reso viene aggiunto a quello venduto.
    quindi se ARTICOLO1 ha 2 pezzi venduti e 1 pezzo reso, il risultato è 3.
    e invece dovrebbe essere 1.
    come faccio a differenziare?

    2)
    facendo così mi perdo il dettaglio della data documento.
    nel senso che non so se prende la data di vendita o la data del reso.

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.