Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    problema con query complessa

    ho tre tabelle

    piatti
    id_piatto - piatto
    1 - gnocchi
    2 - bistecca
    3 - maccheroni
    ...

    ordini
    id_piatto - id_ordine - piatto_ordinato - quantita_ordinata - prezzo_singolo - prezzo_totale
    1 - 1 - gnocchi - 4 - 4 - 16
    2 - 1 - bistecca - 5 - 5 - 25
    3 - 2 - maccheroni - 3 - 3 - 9
    1 - 3 - gnocchi - 1 - 4 - 4
    ...

    ordini_id_e_data
    id_ordine - data_ordine - totale_ordine
    1 - UNIXTIME - 41 (16+25)
    2 - UNIXTIME - 9
    3 - UNIXTIME - 4
    ...

    ora, io vorrei (sempre che fosse possibile) con una query unica, fare un conteggio di quanti piatti sono stati ordinati per ogni tipologia, il prezzo totale per quella tipologia, e l'incasso totale (somma di tutti i prezzi dei singoli piatti. Il tutto per una determinata data che passo in query string (ma non è la data il problema, lo sono i calcoli precedenti)

    esemplifico risultato per una certa data (facciamo che gli esempi di sopra sono stati ordinati nello stesso giorno)
    gnocchi - 20 (pezzi venduti totali) - 20 (16+4) incasso per gli gnocchi
    bistecca - 5 - 25
    maccheroni - 3 - 9

    riesco a fare tutto con una query unica con mysql?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    cosi riesco a fare un raggruppamento per id piatto, ma non a fare la somma dei parziali

    Codice PHP:
    SELECT 
    FROM ordini_id_e_data
    LEFT JOIN ordini
    USING 
    id_ordine 
    WHERE FROM_UNIXTIMEdata_ordine,  "%d-%m-%Y" ) =  "28-06-2008"
    GROUP BY id_piatto 
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  3. #3
    Così può andare?
    codice:
    SELECT piatto_ordinato, SUM(quantità_ordinata), SUM(prezzo_totale)
    FROM ordini_id_e_data
    LEFT JOIN ordini
    USING ( id_ordine )
    WHERE FROM_UNIXTIME( data_ordine,  "%d-%m-%Y" ) =  "28-06-2008"
    GROUP BY piatto_ordinato

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    perfetto, sembra funzionare, faccio qualche prova e se non funge ripasso di qua

    grazie mille
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.