+ Rispondi alla Discussione
Risultati da 1 a 3 di 3

MySql ordinare per data da più tabella

Ultimo Messaggio di massimux il:
  1. #1
    User
    Data Registrazione
    Jan 2007
    Messaggi
    135

    MySql ordinare per data da più tabella

    Ciao a tutti
    Ho bisogno di fare una pagina che mostri in ordine cronologico i dati derivanti da diverse tabelle. Tabelle che possono essere commenti, foto, video ecc.

    Un po come la bacheca di facebook che mostra foto video, link ecc per ordine di inserimento.

    In tutte le mie tabelle ho un campo timestamp che indica quando è stato inserito il dato.

    Il mio problema è che ho bisogno di avere i dati ordinati per data ma anche di sapere cosa sono e da quale tabella arrivano, perche se sono testo lo scrivo con echo, se immagine devo inserire il tag <img... >, se video il codice di incorporamento di youtube, ecc

    Ho pensato alle query join, ma la mia mi sa non essere proprio un unione, o bisogno dell'ordine ma anche della provenienza e temo le join non me la lascino ricavare. Inoltre per ora le tabelle son 3 ma potrebbero diventare 5-10-20 e la join diventerebbe un casino ingestibile...

    Ho pensato a qualche tipo di array che salva date provenienza e id ma i dati verrebber
    o comunque ricavati dalle singole tabelle una alla volta e non so se poi posso ordinare i dati delle date nell'array, con l'array potrei però conoscendo la provenienza e id reinserire una query che ricava il singolo dato e inserire il relativo codice di output.

    Esiste un sistema più semplice e affidabile per fare qualcosa del genere?

    Grazie
    Ciao

  2. #2
    User
    Data Registrazione
    Jan 2007
    Messaggi
    135
    Per la cronaca... son poi riuscito, ma ragionando al contrario...

    Son partito dalla data, ho fatto un ciclo for al cui interno ho fatto delle query che cercano nelle varie tabelle la data più vicina ad mktime(). Successivamente verifico in quale tabella ho trovato la data piu vicina, cosi so in quale tabella era e ho gia anche tutti i dati per preparare l'output. A fine ciclo aggiorno aggiorno la variabile in cui avevo messo mktime con l'ultima data trovata, e tutto riparte per trovare il prossimo record.

    Qualcosa di simile a questo
    Codice:
    <?
    $aggiorna_data = mktime();
    
    
    for ($i = 1; $i <= 20; $i++) {
    
    
    //bacheca
    $result_bacheca = $db->query("SELECT * FROM ".$db->prefix("bacheca")." WHERE data_ins<'".$aggiorna_data."' ORDER BY data_ins DESC LIMIT 1");
    	$row_bacheca = mysql_fetch_array($result_bacheca);
    	
    //foto
    $result_foto = $db->query("SELECT * FROM ".$db->prefix("foto")." WHERE data_ins<'".$aggiorna_data."' ORDER BY data_ins DESC LIMIT 1");
    	$row_foto = mysql_fetch_array($result_foto);
    	
    //video
    $result_video = $db->query("SELECT * FROM ".$db->prefix("video")." WHERE data_ins<'".$aggiorna_data."' ORDER BY data_ins DESC LIMIT 1");
    	$row_video = mysql_fetch_array($result_video);
    
    
    if($row_bacheca['data_ins'] > $row_foto['data_ins'] && $row_bacheca['data_ins'] > $row_video['data_ins']){
    	//bacheca
    	?>
    Output
    <?
    	$aggiorna_data = $row_bacheca['data_ins'];
    	
    }elseif($row_foto['data_ins'] > $row_bacheca['data_ins'] && $row_foto['data_ins'] > $row_video['data_ins']){
    	//foto
    	?>
    Output
    <?
    	$aggiorna_data = $row_foto_animali['data_ins'];
    	
    }elseif($row_video['data_ins'] > $row_bacheca['data_ins'] && $row_video['data_ins'] > $row_foto['data_ins']){
    	//video
    	?>
    Output
    <?
    	$aggiorna_data = $row_video['data_ins'];
    }
    
    
    
    
    }//chiudo for
    ?>
    Ciao

  3. #3
    Moderatore L'avatar di massimux
    Data Registrazione
    Apr 2006
    Località
    Napoli
    Messaggi
    772
    Segui massimux su Twitter Aggiungi massimux su Google+ Aggiungi massimux su Linkedin
    Potresti fare una union ALL così da sapere anche da dove deriva il dato. sveltiresti la cosa ed avresti un codice più pulito.
    Perchè non ti fermi?
    Da bravo Moderatore, Modero con Moderazione il Moderabile

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.