Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    41

    Join php/mysql id uguale senza doppioni

    Ho due tabelle entrambe hanno un campo id, devo recuperare dei dati dalla prima tabella e devo ordinarli in base a un campo data presente nella seconda tabella.

    Faccio una cosa di questo tipo:

    SELECT d.id_discussione,d.titolo_discussione,d.autore_dis cussione FROM discussione AS d LEFT JOIN messaggi AS r ON d.id_discussione = r.id_discussione ORDER BY r.data DESC


    il problema è che d.id_discussione è unico mentre r.id_discussione sono tanti per cui la query non mi restituirà un'unico risultato che mi serve ma tanti, conoscete una soluzione?


    grazie

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Quale risultato unico ti aspetti ? La data maggiore, minore, etc ... ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    41
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Quale risultato unico ti aspetti ? La data maggiore, minore, etc ... ?

    é un forum la prima tabella è relativa alla discussione, la seconda alle risposte alle discussioni, lo scopo della query é se un'utente risponde ad una discussione la discussione va in cima alle altre.

    in tabella DISCUSSIONE avrò un' id_discussione unico mentre in tabella RISPOSTA l'id_discussione si ripete e quando faccio la left join al posto di darmi un risultato me ne da ad esempio 10 uguali se ci sono 10 risposte alla discussione.


    1° TABELLA NOME: DISCUSSIONE

    id_discussione
    titolo_discussione
    datacreazione_discussione
    autore _discussione

    2° TABELLA NOME: RISPOSTA

    id_risposta
    id_discussione
    risposta
    datacreazione_risposta
    autore _risposta



    SELECT d.id_discussione,d.titolo_discussione,d.autore_dis cussione FROM discussione AS d LEFT JOIN risposta AS r ON d.id_discussione = r.id_discussione ORDER BY r.datacreazione_risposta DESC
    Ultima modifica di colomber; 04-08-2017 a 17:25

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Prova a mettere LIMIT 0,1 subito dopoe DESC
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    41
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Prova a mettere LIMIT 0,1 subito dopoe DESC

    inserendo LIMIT 0,1 mi visualizza solo l'ultima discussione modificata, avrei bisogno anche che vengano visualizzate anche tutte le altre discussioni

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    SQL non è argomento PHP.
    Sposto in Database.

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Quote Originariamente inviata da colomber Visualizza il messaggio
    inserendo LIMIT 0,1 mi visualizza solo l'ultima discussione modificata, avrei bisogno anche che vengano visualizzate anche tutte le altre discussioni
    Allora non capisco cosa vuoi ottenere.

    sono tanti per cui la query non mi restituirà un'unico risultato che mi serve ma tanti
    Vuoi un record o n record ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    41
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Allora non capisco cosa vuoi ottenere.

    Vuoi un record o n record ?


    Prendi come esempio la pagina sotto con tutte le discussioni visualizzate, quando un'utente risponde ad una delle discussioni la discussione va al primo posto in alto in cima a tutte le altre.

    per cui devo visualizzare tutte le discussioni e ordinarle da quella più aggiornata a quella meno aggiornata.


    http://forum.html.it/forum/forumdisplay.php?forumid=98

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Prova questo.

    codice:
    SELECT d.id_discussione,d.titolo_discussione,d.autore_discussione, max(r.datacreazione_risposta) 
    FROM discussione AS d 
    LEFT JOIN risposta AS r ON d.id_discussione = r.id_discussione 
    GROUP BY d.id_discussione,d.titolo_discussione,d.autore_discussione
    ORDER BY r.datacreazione_risposta DESC
    o
    codice:
    ORDER BY max(r.datacreazione_risposta) DESC
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    41
    Grazie funziona perfettamente inserendo il secondo order by.


    Se volessi recuperare oltre a id_discussione, titolo_discussione, autore_discussione anche datacreazione_risposta e autore_risposta sai come fare?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.