Visualizzazione risultati 1 fino 7 di 7

Discussione: [mysql] prendere dati da due tabelle e ordinarli

  1. #1
    Guest

    Predefinito [mysql] prendere dati da due tabelle e ordinarli

    Ciao ragazzi,

    vorrei prendere le ultime 5 righe inserite in due tabelle, che si chiamano messaggi e inviti, e volevo ordinarli in ordine decrescente a partire dalla data di creazione dei messaggi. Non voglio prendere le
    ultime 5 righe di ogni tabella ma le ultime 5 tra le due, quindi potrebbero appartenere anche ad una
    sola tabella oppure tre in una e due nell'altra, ma le voglio ordinare per data dalla più recente.

    Ho provato a scrivere questa query:

    Codice:
     SELECT * FROM messaggi, inviti ORDER BY dataCreazione DESC LIMIT 5
    ma ricevo questo errore:

    Column 'dataCreazione' in order clause is ambiguous

    C'è un modo per fare questa cosa? Grazie
    Ultima modifica di TITANUM : 09-09-2013 alle ore 20.19.14

  2. #2
    Guest

    Predefinito

    Ciao, ho provato a fare così (ovviamente cambiano i riferimenti alla tabella):
    Codice PHP:
    $query=("SELECT commento FROM Tabella ORDER BY id DESC;")
    E mi va perfettamente..
    Ma sei sicuro di eseguire la query?

  3. #3
    Guest

    Predefinito

    Ciao mathis, la query la eseguo, solo che non cerco da una sola tabella ma da due:

    Codice:
     SELECT * FROM messaggi, inviti ORDER BY dataCreazione DESC LIMIT 5
    è in questo caso che ottengo l'errore che ho riportato sopra, se lo facessi per una sola tabella non avrei problemi

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Le tabelle messaggi e inviti hanno entrambe il campo dataCreazione, ecco perché è 'ambiguo'.

    Per rimuovere l'amiguità devi specificare il nome della tabella (es: nome_tabella.nome_campo):
    Codice:
    SELECT * FROM messaggi, inviti ORDER BY messaggi.dataCreazione, inviti.dataCreazione DESC LIMIT 5
    Ultima modifica di javascripter : 09-09-2013 alle ore 21.08.21

  5. #5
    Guest

    Predefinito

    Grazie javascripter, ora funziona, solo che non ottengo quello che volevo:

    mi restituisce delle righe con i campi di un invito e un messaggio per ogni riga, io invece volevo ottenere cinque righe che erano inviti o messaggi, ordinati in base alla data inserita. È possibile?

    Grazie ancora

  6. #6
    giocovenerdi non è connesso Neofita
    Data registrazione
    14-11-2010
    Messaggi
    4

    Predefinito

    Forse per quello che vuoi fare tu conviene che usi una stessa tabella per "messaggi" e "inviti" e magari aggiungi un campo chiamato ad esempio "FlagMI" che ti distingue i messaggi dagli inviti.

    L'altra soluzione è fare due query:

    1) SELECT * FROM messaggi ORDER BY dataCreazione DESC LIMIT 5

    2) SELECT * FROM inviti ORDER BY dataCreazione DESC LIMIT 5

    e poi tramite php ti sistemi i dati a tuo piacimento


    Comunque, se ho ben capito il tuo problema, la prima soluzione dovrebbe essere la più semplice

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se le tabelle messaggi e inviti hanno gli stessi campi (o almeno campi dello stesso tipo nella stessa posizione), te la puoi cavare con una unione di query:
    Codice:
    SELECT * FROM messaggi
    UNION
    SELECT * FROM inviti
    ORDER BY datacreazione DESC
    LIMIT 5;
    Piccola nota progettuale: se le tabelle messaggi e inviti hanno gli stessi campi, non ti conveniva creare una sola tabella e aggiungere un campo-flag che indicasse quando i record erano "messaggi" e quando invece "inviti" (ehm... scopro adesso che lo suggeriva pure @giocovenerdi qui sopra...)?

    Stammi bene...
    Ultima modifica di dementialsite : 10-09-2013 alle ore 17.07.49
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •