Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Problema query con join

    Ciao a tutti, ho un problema con una query dove utilizzo join.
    Ho due tabelle
    thread= id,id_sezione,immagine,titolo,username,visite,
    status,livello

    e
    post= id,id_sezione,id_thread,id_user,
    username_f,data,orario,titolo,testo

    Devo selezionare tutti i thread relativi ad esempio alla sezione 2 e dalla tabella post devo selezionare l'ultimo post in ordine di data e orario.
    In modo tale da ordinare tutti i thread relativi alla sezione 2 secondo la data e l'orario dell'ultimo post!!
    Come posso fare?

    Io ho provato con questa:

    Codice PHP:
    $sql "SELECT c.*,a.data,orario FROM thread c LEFT JOIN post a  ON c.id_sezione=a.id_sezione WHERE a.id_sezione='$id' AND c.id_sezione='$id'  ORDER BY a.data,orario"
    Ma nn funziona

  2. #2

  3. #3
    hai un doppione nel where con la AND. se vuoi l'ultimo devi fare ORDER BY campi DESC


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Grazie x la risposta
    Avevo già provato con una sola condizione nel where e con il order desc ma nn funziona!!
    A quanto ho capito dovrei selezionare un solo valore nella tabella post cioè quello relativo all'ultimo post immesso dall'utente in ordine di tempo!!
    Mi serve tutto questo perchè sto provando a costruire un piccolo forum e facendo così quando l'utente risponde porta in alto la discussione!!
    il resto del codice è:

    Codice PHP:

    <?php 
    //includo la pagina auth per verificare se l'utente è loggato o no e eseguire altri controlli
    define("CHECK_RICHIESTA","1");
    include 
    "include/auth.inc.php";

    $id=(int) $_GET['id'];
    ## QUESTA FUNZIONE LEGGE E RESTITUISCE IL TEMPLATE HTML FACENDO L'ESCAPE DEGLI APICI DOPPI
    function GetTemplate($template) {
        return 
    str_replace("\"","\\\"",implode("",file($template)));
    }

    ## QUESTA FUNZIONE STAMPA A VIDEO IL TEMPLATE RISULTANTE DALLA FUNZIONE PRECEDENTE
    function Stampa($template) {
        echo 
    $template;
    }
    //stampo l'header del template
    eval("Stampa(\"".GetTemplate("template/$tema/thread_header.html")."\");");

    //seleziono la il nome della cartella e le sezioni relative a questa...
    include "include/database.php";
    $conn mysql_connect ($Host$User$Password) or die("impossibile connettersi al database");
    mysql_select_db ($DBName $conn) or die ("impossibile selezionare il database");
    $sql "SELECT c.*,a.data,orario FROM thread c LEFT JOIN post a  ON c.id_sezione=a.id_sezione WHERE a.id_sezione='$id'  ORDER BY a.data,orario DESC";



    $query mysql_query($sql) or die("impossibile eseguire query1");
    $rowsmysql_num_rows ($query);
    if (
    $rows==0) {echo "<tr><td colspan=\"6\"><div align=\"center\">Nessun thread aperto</div></td></tr></table>";}
    while (
    $Row1 mysql_fetch_array ($query)) {

    if (
    $Row1[immagine]=="" ) {$immagine="";}
    else {
    $immagine="$Row1[immagine]";
    }
     
    $titolo="$Row1[titolo]";
      
    $username="$Row1[username]";
       
    $visite="$Row1[visite]";
    $id2="$Row1[id]";
    $data="$Row1[data]";
    $orario"$Row1[orario]";
    if(
    $rows>0) {$ultimo_aggiornamento="$data";}else {$ultimo_aggiornamento="Nessun aggiornamento";}

    //se il numero di post è pari a zero stampo 0 se no il numero di post scritti
    if($rows==0) {
    $post="0";
    }else {
    $post="$rows";}

    //carico il template

    eval("Stampa(\"".GetTemplate("template/$tema/thread.html")."\");");


    }

    eval(
    "Stampa(\"".GetTemplate("template/$tema/thread_footer.html")."\");");

    ?>

  5. #5
    Tutto questo mi riempie di gioia, e mi congratulo per la tua decisione... ma il "non funziona" non dice molto sul problema...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    allora sono presenti ad esempio 19 messaggi in totale sommando i thread della sezione che sono 5
    Bene invece di stampare questi 5 thread me ne stampa 95 VVoVe:
    cioè stampa questi 5 thread 19 volte cioè il numero dei messaggi
    spero di essermi spiegato correttamente

  7. #7
    Originariamente inviato da robertes
    allora sono presenti ad esempio 19 messaggi in totale sommando i thread della sezione che sono 5
    Bene invece di stampare questi 5 thread me ne stampa 95 VVoVe:
    cioè stampa questi 5 thread 19 volte cioè il numero dei messaggi
    spero di essermi spiegato correttamente
    Prova a cambiare LEFT JOIN con RIGHT JOIN.....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Il problema è sempre lo stesso
    Come posso fare a selezionare soltanto un valore dalla tabella post e cioè l'ultimo messaggio per ogni thread?

  9. #9
    LIMIT 1

    Ma mi suona strano ti dia un prodotto cartesiano delle righe. Hai il filtro del left join e del where....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    visualizza solo un risultato

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