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

    Query complicata (per me)

    Ciao, mi sto scervellando per una query a mio modo di vedere complicata ma ho gettato la spugna e chiedo aiuto agli esperi.
    Ho una tabella (unità) che contiene 5 campi:

    1 - id_progressivo
    2 - quantità (in pezzi)
    3 - anno
    4 - id_cliente (chiave esterna)
    5 - id_unità (chiave esterna)

    Quello che vorrei fare è estrarre i dati e disporli nel seguente modo

    Codice PHP:
    ---------------------------------------------------
    id_unità        anno1        anno2        anno3
    ---------------------------------------------------
        
    1            20pz         12pz          5pz
        2            12pz         11pz          13pz
        3             5pz         2pz           33pz 
    Dove anno1 si riferisce all'anno più alto inserito nel db (tipo quello corrente, 2007), anno2 e anno3 rispettivamente quelli precedenti (2006 e 2005).
    Secondo voi è una cosa fattibile?:master:
    Grazie in anticipo....

  2. #2
    Non vorrei dire cavolate ma TEMO ti serva una vista, prova a vedere un pò on line come fare una cosa simile usando le viste (io purtroppo non le ho mai usate e quindi non ti posso aiutare)
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Aiuto..... il nome già mi spaventa.....
    Provo a dare un occhio, grazie!

  4. #4
    Buongiorno,
    io mi sono messa d'impegno, ma dopo una sera intera a cercare di risolvere la mia query mi arrendo: se qualche guru dovesse riuscire a risolvere il problema .....
    Grazie!

  5. #5
    Tanto per illustrare fin dove sono arrivata:

    Codice PHP:
    SELECT unità.quantitàunità.anno
    FROM unità
    GROUP BY unità
    .id_unità 
    In questo modo ottengo correttamente una sola colonna di risultati

    Codice PHP:
    --------------------------------
    id_unità        anno1        
    --------------------------------
        
    1            20pz         
        2            12pz         
        3             5pz 
    Il mio vero problema è come estendere lo stesso tipo di risultato anche per altri anni presenti nella tabella...

  6. #6
    Credo che con mysql tu non possa ottenere direttamente quello che chiedi cmq ... comincia a raggruppare anche per anno e se devi sommare più righe usa SUM(unità.quantità) al posto del semplice unità.quantità.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Per fare tutto in una query forse potresti usare delle query annidate, ma sarebbe da considerare alcune cose:
    - il numero di "anni" è fissa o pure varia da 2007 al 1900...?
    - su quanti record prevedi di fare questa ricerca (ora ed in futuro)?

  8. #8
    Ciao Anªkin,
    effettivamente raggruppando anche per anno

    Codice PHP:
    SELECT unità.quantitàunità.anno
    FROM unità
    GROUP BY unità
    .announità.id_unità 
    Ottengo tutti i risultati nel seguente modo

    Codice PHP:
    -------------------------------------
    id_unità     quantità       anno      
    -------------------------------------
        
    1            20pz         2007
        2            12pz         2007
        3             5pz         2007
        1            12pz         2006
        2            11pz         2006
        3             3pz         2006
        1             5pz         2005
        2            13pz         2005
        3            33pz         2005 
    Ma chiaramente non sono rappresentati nel modo voluto.
    Temo tu abbia ragione che con solo MySQL non si possa fare.

  9. #9
    Originariamente inviato da Ugly Mau
    Per fare tutto in una query forse potresti usare delle query annidate, ma sarebbe da considerare alcune cose:
    - il numero di "anni" è fissa o pure varia da 2007 al 1900...?
    - su quanti record prevedi di fare questa ricerca (ora ed in futuro)?
    - Diciamo che gli anni sono a partire dal 2005 in poi, anche se a me interessa visualizzare l'anno corrente e i due precedenti
    - Facendo una stima direi una quindicina di record (che corrispondono all' id_unità)

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova così e rimuovi le lettere accentate dai nomi.

    codice:
    select id_unita,
    sum(if(anno=2007,quantita,0)) as '2007',
    sum(if(anno=2006,quantita,0)) as '2006',
    sum(if(anno=2005,quantita,0)) as '2005'
    FROM unita
    GROUP BY unita.id_unita

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.