MySQL - Join & Count rows from another table

前端 未结 3 805
轮回少年
轮回少年 2020-12-12 06:43

I have 3 tables, like:
parent(id, name)
children(id, data, parent_id, timestamp)
table_votes(id, user_id, child_id)

<
相关标签:
3条回答
  • 2020-12-12 07:27

    i am not sure if i am understanding your question correctly but to me it seems like you want to count the number of children in the tables_votes not in children. try the following:

    select id, data, parent_id, timestamp, child_id
    from table_votes join children on children_id.id = table_vote.child_id
    where child_id = (select count(child_id) from table_vote)
    and parent_id = '20'
    
    0 讨论(0)
  • 2020-12-12 07:29

    1) solution with subselect:

    SELECT  
        children.id,
        children.data,
        children.parent_id,  
        children.timestamp,  
        (select count(*) from table_votes children.id = table_votes.child_id) as cntVotes
    FROM 
      children 
    WHERE 
      children.parent_id = 20 
    ORDER BY 
      children.timestamp ASC
    

    2) solution with group by:

    SELECT  
        children.id,
        children.data,
        children.parent_id,  
        children.timestamp,  
        count(table_votes.id) as cntVotes
    FROM 
      children 
    LEFT JOIN
      table_votes ON children.id = v.child_id
    WHERE 
      children.parent_id = 20 
    GROUP BY
        children.id,
        children.data,
        children.parent_id,  
        children.timestamp
    ORDER BY 
      children.timestamp ASC  
    
    0 讨论(0)
  • 2020-12-12 07:42

    There are few possible options, one of them:

    SELECT * ,
      (SELECT count(*)
       FROM `table_votes`
       WHERE `children`.`id` = `table_votes`.`child_id`) AS `Count`
    FROM `children`
    WHERE `parent_id` = 20
    

    You can use your query as well, but will have to add GROUP BY:

    SELECT  
     `children`.`id`,  
     `children`.`data`,  
     `children`.`parent_id`,  
     `children`.`timestamp`,  
     COUNT(`v`.`children_id`)  
    FROM `children` LEFT JOIN `table_votes` `v` ON `children`.`id` = `v`.`child_id`  
    WHERE `children`.`parent_id` = 20 
    GROUP BY `children`.`id`, `children`.`data`, `children`.`parent_id`, `children`.`timestamp`,
    ORDER BY `timestamp` ASC
    
    0 讨论(0)
提交回复
热议问题