Ordinare Risultati SQL per Data

di il
6 risposte

Ordinare Risultati SQL per Data

Salve ragazzi..
In pratica dovrei prendere varie righe da diverse tabelle per poi creare una storyline..
Inizialmente avevo preso i dati solo da due tabelle ed il tutto era abbastanza gestibile, tuttavia ora ho voluto aggiungere una terza tabella ed il tutto è diventato abbastanza ingestibile tramite PHP..!
Quindi vorrei chiedere a voi se vi viene in mente una soluzione migliore o se posso continuare ad utilizzare questa 'soluzione' ma con qualche miglioria..
Vi mostro la situazione, questa è la query:
SELECT pagamenti.id, pagamenti.tipo AS tipo_p, pagamenti.importo, pagamenti.data AS data_p,                 progetti.data_creazione, progetti.data_inizio, 
                documenti.tipo AS tipo_d, documenti.numero, documenti.data AS data_d, documenti.totale 
                FROM (pagamenti INNER JOIN progetti ON progetti.id = pagamenti.id_progetto) 
                INNER JOIN documenti ON pagamenti.id_progetto = documenti.id_progetto 
                WHERE id_progetto = $id_progetto
Mentre da PHP, prima gestivo il tutto in questo modo (quando c'erano le 2 tabelle):
foreach($eventi as $evento){
    if($output_d_c == 0 && $evento['data_creazione'] < $evento['data']){
        $storia_completa = "html".$storia_completa;
        $output_d_c = 1;
        if($output_d_i == 0 && $evento['data_inizio'] < $evento['data']){
            $storia_completa = "html".$storia_completa;
            $output_d_i = 1;
        }
        $storia_completa = "html".$storia_completa;
    }
    if($output_d_i == 0 && $evento['data_inizio'] < $evento['data']){
        $storia_completa = "html".$storia_completa;
        $output_d_i = 1;    }

    $storia_completa = "html".$storia_completa;
}}

6 Risposte

  • Re: Ordinare Risultati SQL per Data

    Ciao!

    non so bene come siano strutturate le tabelle, ma perchè non fai un ORDER BY direttamente nella query??
  • Re: Ordinare Risultati SQL per Data

    Beh, diciamo che quello è un problema secondario..
    Il problema principale e che in questo modo mi vengono restituiti delle righe 'mischiate', quindi risulta difficile capire quanti pagamenti ci siano realmente e quanti documenti
  • Re: Ordinare Risultati SQL per Data

    Eh però sei tu che hai scritto come ordinare per data

    a questo punto spiega meglio qual'è il tuo problema.
  • Re: Ordinare Risultati SQL per Data

    fermat ha scritto:


    Eh però sei tu che hai scritto come ordinare per data

    a questo punto spiega meglio qual'è il tuo problema.
    Far apparire sia i documenti sia i pagamenti, per poi ordinarli tramite la data ed 'incastrarli' tra di loro
  • Re: Ordinare Risultati SQL per Data

    LuigiMdg ha scritto:


    fermat ha scritto:


    Eh però sei tu che hai scritto come ordinare per data

    a questo punto spiega meglio qual'è il tuo problema.
    Far apparire sia i documenti sia i pagamenti, per poi ordinarli tramite la data ed 'incastrarli' tra di loro
    che vuol dire tutto e niente....
    nel senso che lo avevo già capito che volevi visualizzare i dati di entrambe le tabelle.
    basta vedere che usi le JOIN.

    però, ti ripeto, io lo farei da query.
    così hai già i dati ordinati.
    ti basta iterare sui record.
    avendo già fatto le INNER JOIN, dovresti avere già tutti i dati che ti servono.
    hai almeno provato??
  • Re: Ordinare Risultati SQL per Data

    fermat ha scritto:


    LuigiMdg ha scritto:


    fermat ha scritto:


    Eh però sei tu che hai scritto come ordinare per data

    a questo punto spiega meglio qual'è il tuo problema.
    Far apparire sia i documenti sia i pagamenti, per poi ordinarli tramite la data ed 'incastrarli' tra di loro
    che vuol dire tutto e niente....
    nel senso che lo avevo già capito che volevi visualizzare i dati di entrambe le tabelle.
    basta vedere che usi le JOIN.

    però, ti ripeto, io lo farei da query.
    così hai già i dati ordinati.
    ti basta iterare sui record.
    avendo già fatto le INNER JOIN, dovresti avere già tutti i dati che ti servono.
    hai almeno provato??
    Si ho provato ma così non riesco a distinguere i vari dati..
    Ho risolto in un modo spartano comunque, però volevo migliorarlo..
    La query che uso ora è questa:
    SELECT documenti.id, documenti.tipo, documenti.numero, documenti.data, documenti.totale FROM documenti
    UNION SELECT pagamenti.id_progetto, pagamenti.id, pagamenti.tipo, pagamenti.data, pagamenti.importo FROM pagamenti 
    WHERE id_progetto = $id_progetto
    ORDER BY data ASC
Devi accedere o registrarti per scrivere nel forum
6 risposte