Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Query tosta!

  1. #1

    Query tosta!

    Salve, vi chiedo un consiglio: dovrei fare una cosa del tipo:
    Suddividere per mese i vari tipi di pagamento utilizzati, indicandone il numero sugli ordini totali.
    Ad esempio, vorrei avere una tabella del tipo

    Bonifico Contrassegno

    Gennaio 4 6
    Febbraio 2 5
    Marzo 6 9
    ...............................

    la tipologia di pagamento è contrassegnata da un codice (es: 3, 4).
    io l'avevo scritta così:

    SELECT Year( O.datetime_inserimento ) AS Anno,
    Month( O.datetime_inserimento ) AS Mese,
    COUNT(O.id_modalitapagamento) AS Bonifico_Vaglia,
    COUNT(O.id_modalitapagamento) AS Contrassegno,
    COUNT(O.id_modalitapagamento) AS Ritiro,
    COUNT(O.id_modalitapagamento) AS Bonifico_Vaglia_Progetto,
    COUNT(O.id_modalitapagamento) AS Contrassegno_Progetto

    FROM ordini AS O, ordini_articoli AS OA, modalitapagamento AS M
    WHERE OA.id_ordine = O.sys_id AND O.id_modalitapagamento = M.sys_id
    AND O.flag_evaso=1 AND Year(O.datetime_inserimento)='2004' AND Month(O.datetime_inserimento)='6'
    GROUP BY Year( O.datetime_inserimento ), Month( O.datetime_inserimento ), Bonifico_Vaglia, Contrassegno, Ritiro, Bonifico_Vaglia_Progetto, Contrassegno_Progetto
    HAVING Bonifico_Vaglia='2', Contrassegno='3', Ritiro='4', Bonifico_Vaglia_Progetto='5' ,Contrassegno_Progetto='6'
    ORDER BY 1 DESC , 2 DESC

    ma chiaramente mi da errore:
    nello specifico, come faccio a dire che la seconda tabella, da me chiamata bonifico_vaglia,dev fare il count solo degli elementi (ovvero delle modalità di pagamento) con id=2, ovvero proprio quelli che il sistema identifica come bonifico? E così via per gli altri? Io l'avevo fatto con l'HAVING...
    Perchè altrimenti, con un count generico, lui mi prende tutti gli elementi in quella colonna, che contiene gli indentificativi di tutte le modalità di pagamento.

    Grazie in anticipo raga!!!
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

  2. #2
    sinceramente...non si capisce niente da quello che hai scritto.

    Mettici la descrizione delle due tabelle interessate almeno...

  3. #3
    Ok, cercherò di spiegarmi meglio: la tabella "ordini" contiene, come il nome lascia intendere, la descrizione degli ordini, tra i quali la modalità di pagamento prescelta, selezionata tra una una delle diverse opzioni presenti in un'altra tabella "modalitapagamento".
    Non considerate per ora la tabella "ordini_articoli", non mi serve e l'ho erroneamente inserita nel FROM.
    Io vorrei avere una tabella, che mi permette di raggruppare per mese e per diverse tipologie di pagamento, il numero di ordini ricevuti, suddivisi per tipologia di pagamento, per ogni mese.
    ESEMPIO:

    ----------CONTRASSEGNO--BONIFICO-VAGLIA
    GENNAIO---25------------25--------36
    FEBBRAIO---36---------96--------63

    e così via per tutti i mesi di un anno...

    poi valgono le stesse considerazioni fatte prima...

    spero di essere stato pià chiaro
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

  4. #4
    help, mi servirebbe una risposta al + presto!

    Grazie!
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

  5. #5
    up!
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

  6. #6
    io ci ho capito poco però la query postata non sta ne in cielo ne in terra.
    se posti la struttura delle tabelle che ti interessano e dici chiaramente cosa vorresti che venisse fuori ti posso anche aiutare ma così ci ho capito poco poco

  7. #7
    Allora:
    TABELLE
    1)"modalitapagamento": contiene le vare modalità di pagamento
    modalitapagamento(sys_id, modalità pagamento,....) _> sys_id è il codice che identifica una tipoligia di pagamento
    2)"ordini": contiene tutti gli ordini effettuatti.
    ordini(sys_id,datetime_inserimento,cognome,nome,......,id_modal itapagamento...)
    3)"ordini_articoli": contiene l'elenco degli articoli ordinati per ogni ordine
    ordini_articoli(sys_id,id_ordine,codice,articolo, quantita, prezzo...) -> id_ordine si riferisce a sys_id della tabella "ordini", e possono essere contenuti più articoli in un ordine.

    Quello che vorrei fare è visualizzare, per ogni periodo (diciamo per ora mese dell'anno), il numero degli ordini effettuati mediante le varie tipologie di pagamento, vedendo perciò per ogni mese di un anno tante colonne quante sono le modalità di pagamenti, ed osservare per ogni mese di un anno il numero di ordini effettuati mediante quella modalità.

    Non so davvero come altro essere + chiaro!!!
    Lo schema cmq rimane quello che ho abbozzato sopra!

    Grazie!!!
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

  8. #8
    scusa se te lo dico ma ancora non ho ben capito la struttura delle tabelle....cioè se c'è una chiave autoincrement etc etc....comunque in linea generale mi sembra di aver visto che hai bisogno di unire le due tabelle e si fa con INNER JOIN http://www.morpheusweb.it/html/manuali/sql/sql_join.asp

  9. #9
    Stai cercando di ottenere una query a campi incrociati (tipo tabella pivot), un problema classico nell'SQL normale. Hai tre possibilità:

    1. usi una tabella pivot in Excel (quick and dirty)

    2. con script: estrai prima i valori per la prima chiave (mesi); poi fai un loop ed estrai per ogni mese i tipi di pagamento e scrivi riga per riga la tua tabella finale

    3. con SQL: se usi MySQL puoi sfruttare la funzione GROUP_CONCAT (vedi manuale) per generare un CSV oppure HTML oppure una query testuale; ecco i passi
    * crei tabella T1 con tutti i valori della chiave 1 (mesi)
    * crei una tabella T2 con tutti i valori della chiave due (tipi)
    * crei una tabella TOTALI così:
    CREATE TABLE TOTALI SELECT mese, tipo, COUNT(ORDINI.*) as n FROM ORDINI
    * query finale:
    SELECT mese, tipo
    GROUP_CONCAT(IFNULL(n,'') SEPARATOR ';')
    FROM (T1,T2) LEFT JOIN ORDINI ON (ORDINI.mese=T1.mese AND ORDINI.tipo=T2.tipo)
    INTO OUTFILE...
    * caricare i valori finali dal file per creare una tabelle o simile
    <ciao><Enrico/></ciao>

  10. #10
    allora tutte le chiavi delle tabelle hanno un autoincrement e per collegare le due tabelle faccio il JOIN tra is sys_id della tabbela "ordini" e id_ordine della tabella "ordini_articoli"
    http://sonsdestyle.wordpress.com/ -> My personal way to think Design

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.