Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    146

    Altro aiuto di una query

    scusate ma è l'ultima e non mi viene, devo Calcolare lo sconto medio dei fornitori e individuare il fornitore che effettua lo sconto superiore alla media. e le tabelle prese in considerazione sono:
    codice:
    mysql> select * from Fornitore;
    +-------------+--------------+
    | Partita_IVA | Nome         |
    +-------------+--------------+
    | 12300000000 | Invenzione 1 | 
    | 12340000000 | Invenzione 2 | 
    | 12345000000 | Invenzione 3 | 
    | 12345600000 | Invenzione 4 | 
    | 12345670000 | Invenzione 5 | 
    | 87878787878 | Invezione10  | 
    +-------------+--------------+
    codice:
    mysql> select * from Preventivo;
    +---------------+----------+--------+--------+------------+------------+
    | Id_preventivo | Quantita | Prezzo | Sconto | Data       | Id_lamiera |
    +---------------+----------+--------+--------+------------+------------+
    | 001/9         |       50 |   3.00 |   0.20 | 2009-08-02 | 0001       | 
    | 001/9         |       75 |   2.00 |   0.20 | 2009-08-02 | 0002       | 
    | 001/9         |       40 |   2.00 |   0.20 | 2009-08-02 | 0003       | 
    | 002/9         |       30 |   3.00 |   0.20 | 2009-08-10 | 0004       | 
    | 002/9         |       80 |   2.00 |   0.20 | 2009-08-10 | 0005       | 
    | 003/9         |       40 |   1.50 |   0.25 | 2009-10-15 | 0001       | 
    +---------------+----------+--------+--------+------------+------------+
    6 rows in set (0.00 sec)
    
    mysql> select * from Elabora;
    +-------------+---------------+------------+
    | Partita_IVA | Id_preventivo | Data       |
    +-------------+---------------+------------+
    | 12300000000 | 001/9         | 2009-06-30 | 
    | 12340000000 | 002/9         | 2009-07-05 | 
    | 87878787878 | 003/9         | 2009-05-24 | 
    +-------------+---------------+------------+

  2. #2
    io inizierei a provare questa
    codice:
    select 
      Partita_IVA, sum(Sconto)/count(*) as sconto_medio
    from Preventivo as P
    join Elabora as E
    on P.Id_preventivo=E.Id_preventivo
    group by Partiva_IVA

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    146
    ok... mi dà lo sconto medio di ogni fornitore, ci vorrei mettere anche una colonna che indichi lo sconto medio totale per fare il confronto...

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    ciao

    scusa se mi permetto ma qual'e' la chiave primaria delle tue tabelle?

    a fronte di migliorare sia la gestione che le perfonmances del database e' necessario che ogni tabella abbia un field ID dichiarato primary key

  5. #5
    lo sconto medio totale è la stessa query di prima levata la clausula group by .

    Se vuoi avere il tutto sullo stesso report devi provare a fare una union tra queste due query.
    ciao
    sergio

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    146
    no ho provato con l'union ma il risultato non è quello sperato...

    La chiave primaria di fornitore è Partita_IVA mentre di preventivo è Id_preventivo

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    Originariamente inviato da YOGHI87
    La chiave primaria di fornitore è Partita_IVA mentre di preventivo è Id_preventivo
    la primary key deve essere unique io la creo cosi:

    id integer primary key ( quiondi not null e unique )


    ciao

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    @YOGHI87: i titoli delle discussioni sono importanti, come scritto chiaramente nel regolamento. Non serve una fantasia sfrenata per dare un senso ad un titolo.

    Li ho modificati io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    146
    ma la primary va bene...

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    Originariamente inviato da YOGHI87

    mysql> select * from Preventivo;
    +---------------+----------+--------+--------+------------+------------+
    | Id_preventivo | Quantita | Prezzo | Sconto | Data | Id_lamiera |
    +---------------+----------+--------+--------+------------+------------+
    | 001/9 | 50 | 3.00 | 0.20 | 2009-08-02 | 0001 |
    | 001/9 | 75 | 2.00 | 0.20 | 2009-08-02 | 0002 |
    | 001/9 | 40 | 2.00 | 0.20 | 2009-08-02 | 0003 |
    | 002/9 | 30 | 3.00 | 0.20 | 2009-08-10 | 0004 |
    | 002/9 | 80 | 2.00 | 0.20 | 2009-08-10 | 0005 |
    | 003/9 | 40 | 1.50 | 0.25 | 2009-10-15 | 0001 |
    +---------------+----------+--------+--------+------------+------------+

    ma la primary va bene...
    come fai ad idendificare un record tramite la tua id_preventivo che dici sia primary key?

    poi, per le mie conoscenze riguardo le perfonmance del database, e' sempre meglio definire il field ID come integer, al fine di evitare inutili conversioni

    se poi MySql non tiene conto di questi particolari o se per te va bene cosi... allora e' ok.

    certo, puo' darsi che mi sbagli

    ciao

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.