Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    residenza
    http://www.okkioalprezzo.com/it/
    Messaggi
    206

    [SQL-MYSQL] contare il numero dei commenti in una query.

    Salve a tutto il forum, avrei la necessità di contare tutti i commenti in una query di selezione articoli per l'impaginazione dei dati...

    Lo schema del database è questo:


    articles
    -- id
    -- title
    -- abstract
    -- data_publication
    -- city_id
    -- gallery_id
    -- user_id
    -- image

    users
    -- id
    -- firstname
    -- lastname

    comment
    -- id
    -- article_id


    ovviamente non ho messo tutte le colonne.

    con una join sono riuscito a collegare la tabella article con la tabella user tramite la relazione articles.user_id e users.id in questo modo:
    codice:
    SELECT 
    `articles`.`id` AS id, 
    `articles`.`title` AS title, 
    `articles`.`abstract` AS abstract, 
    `articles`.`data_publication` AS data_publication, 
    `articles`.`city_id` AS city_id, 
    `articles`.`gallery_id` AS gallery_id, 
    `articles`.`user_id` AS user_id, 
    `articles`.`image` AS image, 
    `users`.`id` AS user_id, 
    `users`.`firstname` AS firstname, 
    `users`.`lastname` AS lastname
    FROM (`articles`)
    JOIN `users` ON `users`.`id` = `articles`.`user_id`
    ORDER BY `articles`.`id` DESC
    LIMIT 32


    Ora avrei la necessita di 'dirgli' all'istruzione SQL di estrarmi il numero di commenti associati per ogni articolo... e qui sono entrato nel panico!!!

    ragazzi mi potete aiutare a risolvere questa questione...

  2. #2
    Quote Originariamente inviata da felixaf21 Visualizza il messaggio
    Salve a tutto il forum, avrei la necessità di contare tutti i commenti in una query di selezione articoli per l'impaginazione dei dati...

    Lo schema del database è questo:


    articles
    -- id
    -- title
    -- abstract
    -- data_publication
    -- city_id
    -- gallery_id
    -- user_id
    -- image

    users
    -- id
    -- firstname
    -- lastname

    comment
    -- id
    -- article_id


    ovviamente non ho messo tutte le colonne.

    con una join sono riuscito a collegare la tabella article con la tabella user tramite la relazione articles.user_id e users.id in questo modo:
    codice:
    SELECT 
    `articles`.`id` AS id, 
    `articles`.`title` AS title, 
    `articles`.`abstract` AS abstract, 
    `articles`.`data_publication` AS data_publication, 
    `articles`.`city_id` AS city_id, 
    `articles`.`gallery_id` AS gallery_id, 
    `articles`.`user_id` AS user_id, 
    `articles`.`image` AS image, 
    `users`.`id` AS user_id, 
    `users`.`firstname` AS firstname, 
    `users`.`lastname` AS lastname
    FROM (`articles`)
    JOIN `users` ON `users`.`id` = `articles`.`user_id`
    ORDER BY `articles`.`id` DESC
    LIMIT 32


    Ora avrei la necessita di 'dirgli' all'istruzione SQL di estrarmi il numero di commenti associati per ogni articolo... e qui sono entrato nel panico!!!

    ragazzi mi potete aiutare a risolvere questa questione...
    ciao,

    correggimi se sbaglio, un articolo puo' avere N commenti e tu vuoi ottenere il numero di commenti per ogni articolo?
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    residenza
    http://www.okkioalprezzo.com/it/
    Messaggi
    206
    Esattamente!!

    ho scritto una cosa del genere e pare che funziona...

    codice:
    SELECT 
    `articles`.`id` AS id, 
    `articles`.`title` AS title, 
    `articles`.`abstract` AS abstract, 
    `articles`.`data_publication` AS data_publication, 
    `articles`.`city_id` AS city_id, 
    `articles`.`gallery_id` AS gallery_id, 
    `articles`.`user_id` AS user_id, 
    `articles`.`image` AS image, 
    
    `users`.`id` AS user_id, 
    `users`.`firstname` AS firstname, 
    `users`.`lastname` AS lastname, 
    
    (
        SELECT COUNT(comment.id)
        FROM
           comment
       WHERE
          comment.article_id = articles.id
       AND
          comment.status = 1
     ) AS count_comments
    
    FROM (`articles`)
    JOIN `users` ON `users`.`id` = `articles`.`user_id`
    ORDER BY `articles`.`id` DESC
    LIMIT 32


    potrebbe andar bene secondo voi??

  4. #4
    Quote Originariamente inviata da felixaf21 Visualizza il messaggio
    Esattamente!!

    ho scritto una cosa del genere e pare che funziona...

    codice:
    SELECT 
    `articles`.`id` AS id, 
    `articles`.`title` AS title, 
    `articles`.`abstract` AS abstract, 
    `articles`.`data_publication` AS data_publication, 
    `articles`.`city_id` AS city_id, 
    `articles`.`gallery_id` AS gallery_id, 
    `articles`.`user_id` AS user_id, 
    `articles`.`image` AS image, 
    
    `users`.`id` AS user_id, 
    `users`.`firstname` AS firstname, 
    `users`.`lastname` AS lastname, 
    
    (
        SELECT COUNT(comment.id)
        FROM
           comment
       WHERE
          comment.article_id = articles.id
       AND
          comment.status = 1
     ) AS count_comments
    
    FROM (`articles`)
    JOIN `users` ON `users`.`id` = `articles`.`user_id`
    ORDER BY `articles`.`id` DESC
    LIMIT 32


    potrebbe andar bene secondo voi??

    se funziona va bene. Anche se mi sembra troppo articolata.

    Per fare quello che interessa a te va bene una query tipo questa:

    SELECT COUNT(c.id) a.id
    FROM comment c JOIN articles a on a.id = c.article_id
    GROUP BY a.id
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

Tag per questa discussione

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.