Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Query Sql particolare

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46

    Query Sql particolare

    Ho un problema, non riesco a ricavare un query sql con determinate condizioni.

    Ho due tabelle:

    articoli:
    data
    articolo
    id_comment

    comment:
    id_comment
    nome

    (sono delle tabelle del tutto inventate)

    Nella query che devo eseguire devo fare in modo di estrarre tutti i dati di articoli e in più controllare se l'id_comment di articoli è uguale a l'id_comment di comment. Se è uguale deve contare tutti gli id_comment di comment con lo stesso valore. Una cosa del genere:

    Codice PHP:
    $query mysql_query("SELECT articoli.*, comment.*, COUNT(comment.id_comment) AS test FROM comment, articoli"); 
    So benissimo che la query sopracitata è errata, qualcuno mi spiega come risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    2 TABELLE:
    articoli:
    id
    data
    articolo
    id_commento

    comment:
    id_comment
    nome


    Codice PHP:
    $query ="SELECT COUNT(*) as conteggio FROM articoli, comment WHERE articoli.id_commento = comment.id_commento GROUP BY comment.id_commento"

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    Mmmm mi sa che mi sono spiegato male, riformulo:

    Ho due tabelle:

    articoli:
    data
    articolo
    id_comment

    comment:
    id_comment
    nome


    La query che dovrei creare:

    query = SELEZIONAMI conta(comment.id_comment), comment.*, articoli.* DA articoli, comment WHERE .... (altre cose che nn so)

    Penso che fino a qua la sintassi è corretta (spero)

    Dopo di che estraggo tutti i dati:

    Codice PHP:
    $query "";
    if (
    $query==FALSE) die("Errore nella composizione della query"); 

    while(
    $row mysql_fetch_array($query)) {  

    print 
    $row[data]."
    "

    print 
    $row[articolo]."
    "
    ;
    print 
    "<a href=\"prova.php?id=\"".$row[id_comment]."\">".$row[RISULTATO DEL COUNT DI COMMENT.ID_COMMENT]."
    "
    ;  }

    }
     
    ?> 
    In pratica mi deve contare quanto comment.id_comment ci sono uguali confrontando l'uguaglianza con id_comment di articoli. Spero di essere stato chiaro.

  4. #4
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    la mia query fa quelli che dici tu, conta esattamente quante righe rispettano l'uguaglianza.

    Codice PHP:
    $query ="SELECT COUNT(*) as conteggio FROM articoli, comment WHERE articoli.id_commento = comment.id_commento GROUP BY comment.id_commento"

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    Pardon la colpa è mia che non mi so spiegare bene.

    La query originale era questa:

    Codice PHP:
    $query mysql_query("SELECT * FROM articoli WHERE id = 0 ORDER BY data"); 
    e l'estrazione dei dati fatto in questo modo:

    Codice PHP:

    if ($query==FALSE) die("Errore nella composizione della query");

    while(
    $row mysql_fetch_array($query)) {

    $conta strlen($row[articolo]);
    $risultato = ($conta 2);

    echo  
    "<h2 id=\"title_art\">".$row[titolo]."</h2>";
    echo 
    "<div id=\"autore_categoria\"><img src=\"immagini/template/autore.png\" align=\"absmiddle\"> autore: ".$row[autore];
    echo 
    " <img src=\"immagini/template/categoria.png\" align=\"absmiddle\"> categoria: <a href=\"index.php?p=".$row[categoria]."\">".$row[categoria]."</a></div>";
    echo 
    "

    "
    .substr(smiles($row[articolo]),0,$risultato)."...";
    echo 
    " <a href=\"index.php?p=".$row[categoria]."&titolo=".$row[titolo]."\">continua....</a></p>";
    echo 
    "<div id=\"footer_articolo\">";
    echo 
    "<img src=\"immagini/template/data.png\" align=\"absmiddle\"> Inserito il: ".$row[data];

    echo 
    " <img src=\"immagini/template/comment.png\" align=\"absmiddle\"><a href=\"comments.php?id=".$row[id_comment]."\"  target=\"_blank\"> Commenti: </a>";
    echo 
    " <img src=\"immagini/template/tag.png\" align=\"absmiddle\"> Tag: [b]".$row[metatag]."[/b] ";
    echo 
    "</div>";
    echo 
    "<div id=\"space\"></div>";}



    Tabelle:

    ARTICOLI:
    id
    titolo
    categoria
    data
    articolo
    metatag
    autore
    id_comment

    COMMENT:
    nome
    id_comment


    La mia query come ben vedi estrae tutti i dati dalla tabella ARTICOLI con id = 0 e le ordina per data di inserimento. Nella nuova query da riformulare devo aggiungere i due campi di COMMENT in più contare quanti id_comment ci sono uguali a all' id_comment di articoli.

    In pratica il mio script che fa. Crea un articolo e gli da un id_comment che è uguale a un numero, questa query che devo creare mi deve prima confrontare l'id_comment e poi contarmi quanto id_comment ci sono con lo stesso id.

    E' come se in fase di estrazione mi dicesse: l'id comment dell'articolo è 10 e nella tabella ARTICOLI ci sono es: 200 id_comment con id 10.
    Fiuuuu spero di averlo spiegato bene, scusatemi eh... ma stò esaurendo.

  6. #6
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Prova così:

    $query = mysql_query("SELECT articoli.*, comment.*, COUNT(*) AS test FROM comment, articoli WHERE id= 0 AND articoli.id_comment = comment.id_comment GROUP BY comment.id_comment ORDER BY data");



    if ($query==FALSE) die("Errore nella composizione della query");

    while($row = mysql_fetch_array($query)) {

    $conta = strlen($row[articolo]);
    $risultato = ($conta / 2);

    echo "<h2 id=\"title_art\">".$row[titolo]."</h2>";
    echo "<div id=\"autore_categoria\"><img src=\"immagini/template/autore.png\" align=\"absmiddle\"> autore: ".$row[autore];
    echo " <img src=\"immagini/template/categoria.png\" align=\"absmiddle\"> categoria: <a href=\"index.php?p=".$row[categoria]."\">".$row[categoria]."</a></div>";
    echo "

    ".substr(smiles($row[articolo]),0,$risultato)."...";
    echo " <a href=\"index.php?p=".$row[categoria]."&titolo=".$row[titolo]."\">continua....</a></p>";
    echo "<div id=\"footer_articolo\">";
    echo "<img src=\"immagini/template/data.png\" align=\"absmiddle\"> Inserito il: ".$row[data];

    echo " <img src=\"immagini/template/comment.png\" align=\"absmiddle\"><a href=\"comments.php?id=".$row[id_comment]."\" target=\"_blank\"> Commenti: </a>";
    echo " <img src=\"immagini/template/tag.png\" align=\"absmiddle\"> Tag: ".$row[metatag]." ";
    echo "</div>";
    echo "<div id=\"space\"></div>";}

    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    Mi illustri la query? Xkè funziona in parte, ma non la capisco.
    Funziona solo se nella tabella comment.id_comment è presente il numero, se ad esempio:

    ARTICOLI
    id_comment =5

    COMMENT
    id_comment =5
    nome= Gino

    id_comment =5
    nome = Michele

    Mi tira fuori tutti quelli che hanno lo stesso id_comment di articoli.. in questo caso Gino e Michele. Se invece:

    ARTICOLI
    id_comment =10

    COMMENT
    id_comment = ....
    nome= ....

    Cioè nessuno ha commentato quindi riporterà solo ed esclusivamente il numero 0. Esattamente come dire: esiste l'articolo con l'id_comment 10 me nessuno ha commentato quindi 0.

    Si può fare?
    grazie per tutto.....

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.