Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228

    Ricerca su più tabelle

    Ciao a tutti ho questa esigenza:
    come faccio una ricerca su più tabelle con la stessa struttura?

    Mi spiego meglio:
    ho creato un sistema di fatturazione che crea una tabella nuova ogni anno nuovo

    avrò quindi tabelle chiamate:
    fatture2010
    fatture2011
    fatture2012
    e così via

    Il problema è che vorrei avere uno storico di quanto fatturato per un cliente
    In pratica potrò filtrare quando negli anni è stato fatturato negli anni vedendo quanto fatturato nel 2010, nel 2011 ecc.

    Ma volessi vedere il totale?

    esiste un "SELECT totale FROM fatture* WHERE id_cliente=$variabile";

  2. #2
    Se vuoi il totale devi fare questo:

    SELECT MAX(campo1) FROM (
    SELECT campo1 FROM tab2008 UNION
    SELECT campo1 FROM tab2009 UNION
    SELECT campo1 FROM tab2010
    );

    O meglio, potresti fare una vista:

    CREATE VIEW tabelle AS
    SELECT * FROM tab2008 UNION
    SELECT * FROM tab2009 UNION
    SELECT * FROM tab2010;

    E poi SELECT MAX(campo1) FROM tabelle;

    Ma in realtà se posso permettermi hai sbagliato alla radice. Non dovevi creare tante tabelle uguali, ma una tabella unica con un campo anno. Dopodichè puoi partizionarla suddividendo le partizioni in base al campo anno (al limite potresti fare una tabella separata solo per l'anno corrente se nel tuo caso è importante, ma probabilmente puoi farne a meno). Se stai usando MySQL cerca il capitolo Partitions nella documentazione.

  3. #3
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    il fatto è che il contatore della fatturazione deve riprendere ogni anno e il sistema di creare un duplicato vuoto della tabella era la cosa più veloce.
    ad ogni modo il sistema non è ancora attivo... il primo anno è il 2010.

    union lo conosco, ma il problema è fare un union dinamico.

    oppure sapendo l'anno iniziale posso fare un union con tabelle che hanno un union dal fatture2010 a fattureAnnoCorrente

  4. #4
    Se fai la vista non hai il problema di dover rifare la union ogni volta..

    Comunque io piuttosto imposterei da programma il contatore delle fatture, è più semplice

  5. #5
    Utente di HTML.it L'avatar di Scream
    Registrato dal
    Apr 2002
    Messaggi
    228
    Ok, sono dovuto passare ad altro per ora... comunque appena pronto posto quanto fatto nel caso potesse servire a qualcuno

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.