[PHP] Ordinamento DB multitabellare

Discussione in 'PHP' iniziata da piero60, 30 Maggio 2017.

Tag (etichette):
  1. piero60

    piero60 Utente Attivo

    Registrato:
    26 Gennaio 2015
    Messaggi:
    71
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Salve a tutti,

    Ho in un database 16 differenti tabelle le quali hanno diversi campi in comune,
    uno di questi si chiama data_fine ed è un capo dove viene memorizzata una data
    in formato ("Y-m-d")

    il mio problema è di orinare e ricavare dei dati da queste 16 tabelle in ordine
    di data crescente, in modo da visualizzare alcuni dati di ogni tabella nell'ordine
    voluto.

    Esempio:
    la tabella 1 ha memorizzata la data "2016-5-10"
    la tabella 4 ha memorizzata la data "2016-4-19"
    la tabella 7 ha memorizzata la data "2016-6-11"
    la tabella 2 ha memorizzata la data "2016-3-15"

    ho bisogno di etrapolare i dati in ordine di data crescente, quindi dovrò visualizzare:
    tabella 2 "2016 marzo 15" il contenuto dei campi che mi interessano
    tabella 4 "2016 aprile 19" il contenuto dei campi che mi interessano
    tabella 1 "2016 maggio 10" il contenuto dei campi che mi interessano
    tabella 7 "2016 giugno 11" ecc.ecc.

    ho provato ad eseguire una query di questo genere modificandola in diversi modi

    PHP:
    $query="SELECT * FROM evento1, evento2, evento12, evento16 ORDER BY data_fine ASC";
    $resultmysql_query($query)or die (mysql_error());
    while(
    $row=mysql_fetch_array($result))
    {
    echo 
    $row['data_fine'];// per cominciare a vedere se almeno mi visualizzava le date
    }
    In qualunque modo modifico la query mi restituisce il medesimo errore questo:
    Column 'data_fine' in order clause is ambiguous

    Se invece al posto di "ORDER BY data_fine ASC" faccio delle comparazioni riesco a ricavare
    i dati nel modo voluto, ma è una cosa impressionate e di eleganza pari a zero.

    Qualcuno di Voi ha qualche idea su come risolvere il problema.

    Grazie per la collaborazione.
     
  2. NicolaSerafini

    NicolaSerafini Nuovo Utente

    Registrato:
    5 Giugno 2017
    Messaggi:
    5
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao, prova a memorizzare le date in questo formato e fammi sapere.
    Ymd, ovvero 20170605.
     
  3. piero60

    piero60 Utente Attivo

    Registrato:
    26 Gennaio 2015
    Messaggi:
    71
    Mi Piace Ricevuti:
    2
    Punteggio:
    8
    Ciao Nicola,
    grazie per la risposta, avevo già risolto ma non avevo il tempo di materiale di spiegare qui nel forum come.

    Ho dato una occhiata alla documentazione PHP ed esistono delle istruzioni atte a risolvere queste problematiche,
    per la precisione sono:
    UNION ed UNION ALL

    Basta semplicemente fare una query come quella sotto riportata per avere l'ordinamento dei dati desiderato:

    $sql="SELECT attiva_evento, data_fine, titolo_evento, vai_a FROM evento1
    UNION
    SELECT attiva_evento, data_fine, titolo_evento, vai_a FROM evento2
    UNION
    SELECT attiva_evento, data_fine, titolo_evento, vai_a FROM evento3
    UNION
    SELECT attiva_evento, data_fine, titolo_evento, vai_a FROM evento4
    UNION
    ecc.ecc.ecc

    ORDER BY data_fine ASC";

    $result=mysql_query($sql);
    while($rows=mysql_fetch_array($result)){

    $vai_a = $rows['vai_a'];

    e tutto il resto che serve quindi, ecc.ecc.

    Funziona perfettamente.
     
Sto caricando...

Condividi questa Pagina