Visualizzazione risultati 1 fino 3 di 3

Discussione: [Mysql] Una query sola su due tabelle che non hanno relazione

  1. #1
    Guest

    Predefinito [Mysql] Una query sola su due tabelle che non hanno relazione

    Salve...

    Sto creando nel mio blog una specie di funzione di ricerca.

    L'utente in un piccolo form inserisce la parola che cerca, quindi vengono fuori in una tabella tutti i Thread e i commenti in cui quella parola è inserita.

    Attualmente la funzione che ho creato, pesca solo dai thread.. Io vorrei che pescasse ANCHE dalla tabella coi commenti.

    Una è la tabella dei commenti, l'altra quella dei thread.. Le tabelle è come se non avessero alcuna relazione...

    Ecco la query:
    Codice PHP:
    $riccio = "blog_posts.post LIKE '%$search%' ||
    blog_posts.nome_post LIKE '%
    $search%' ||
    blog_comment.commento LIKE '%
    $search%'
    "
    ;

    $queryTot="SELECT COUNT(*) FROM blog_posts, blog_comment WHERE ".$riccio;
    Per come stanno le cose adesso, se provo ad inserire nel campo di ricerca una parola che è presente SOLO in un thread (e in nessun commento)mi avrebbe dovuto dare UN SOLO risultato, e invece me ne torna 24 (!!). Se tolgo da quella query quello che ha a che fare con i commenti funziona tutto a meraviglia. Il problema sta in quella query..

    Ho provato a usare LEFT JOIN ma il problema è che vuole un criterio di relazione tra le due tabelle...
    Ultima modifica di attorianzo : 14-09-2006 alle ore 01.16.03

  2. #2
    Guest

    Predefinito

    un id di collegamento tra le due tabelle deve esserci. altrimenti hai fatto un blog che non funziona.... mi pare ovvio. Altrimenti quando tu inserisci un messaggio come fai a sapere a quale thread appartiene?
    Ipotizzo tabella Thread composta da Id, Descrizione, Titolo e la tabella MessaggiThread composta da IdMessaggio, IdThread, Messaggio.

    nella query che hai creato tu aggiungi WHERE Thread.Id = MessaggiThread.IdThread in modo tale da scremare messaggi non apparteneneti al messaggio...
    Quessta è la prima cosa che mi viene in mente. Tu cmnq posta la struttura delle tabelle e poi ci ragionniamo meglio

  3. #3
    Guest

    Predefinito

    Si certo nella tabella dei commenti, ogni commento fa capo all' ID di un thread.

    Piu o meno la struttura della tabella dei thread ("blog_thread") c'è:

    numero_thread | nome_thread | sottotitolo_thread | numero_categoria

    nella tabella dei commenti ("blog_comment") c'è:

    numero_commento | autore | commento | numero_thread

    Dimenticate quello che ho scritto prima, riassumo tutto qui e cerco di essere piu chiaro.

    Il mio problema sta tutto qui:
    Codice PHP:
    $riccio = "blog_posts.post LIKE '%$search%' ||
    blog_posts.nome_post LIKE '%
    $search%' ||
    blog_comment.commento LIKE '%
    $search%'
    "
    ;

    $query= "SELECT blog_posts.nome_post,
    blog_thread.numero_thread,
    blog_thread.nome_thread,
    blog_thread.sottotitolo_thread,
    blog_thread.numero_categoria,
    blog_comment.numero_commento,
    blog_comment.autore,
    blog_comment.commento,
    blog_comment.numero_thread FROM blog_thread LEFT JOIN blog_comment ON blog_thread.numero_thread = blog_comment.numero_thread WHERE "
    .$riccio. " ORDER BY blog_thread.data_e_ora DESC LIMIT $begin, $pageSize";
    I risultati di questa query verranno presi, impaginati,intabellati e trasformati in link cliccabili attraverso cui posso vedere solo quello che voglio.
    - Se la parola da cercare è nei thread --> mi estrae il titolo del thread
    - Se la parola da cercare sta nel commento --> mi mostra un pò di commento e non il thread che fa capo a quel commento.

    Infatti io devo potere cliccare su quel commento e vedere solo quello, senza il suo thread.
    Ultima modifica di attorianzo : 14-09-2006 alle ore 12.27.26

Regole di scrittura

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