MySQL GROUP & COUNT Multiple tables

后端 未结 2 826
星月不相逢
星月不相逢 2021-01-25 17:59

I have a 3 part problem thats been giving me trouble I know how to get the tables to work if I query 1 table at a time but I can\'t seem to figure out how I can combine both th

相关标签:
2条回答
  • 2021-01-25 18:21

    Problem 1:

    SELECT tag_id, tag_name, count(*)
    FROM (
      SELECT tag_id, tag_name FROM tags
      UNION ALL
      SELECT tag_id, tag_name FROM more_tags
    ) s
    GROUP BY tag_id, tag_name
    

    Problem 2:

    SELECT tag_id, tag_name, 'not present in more tags' as description
    FROM tags LEFT JOIN more_tags ON tags.tag_id=more_tags.tag_id
    WHERE more_tags.tag_id IS NULL
    UNION ALL
    SELECT tag_id, tag_name, 'not present in tags' as description
    FROM tags RIGHT JOIN more_tags ON tags.tag_id=more_tags.tag_id
    WHERE tags.tag_id IS NULL
    

    Problem 3:

    SELECT tag_id, tag_name, COUNT(*)
    FROM tags INNER JOIN more_tags ON tags.tag_id=more_tags.tag_id
    GROUP BY tag_id, tag_name
    
    0 讨论(0)
  • 2021-01-25 18:38

    You can use UNION to add together the results sets from two queries iff those queries return rows with the same structure (that is, if the first column in the first query is an int, then the first column in the second query must be an int, and so on). Read all about it in http://dev.mysql.com/doc/refman/5.1/en/union.html

    Once you've written the two selects and joined them with a UNION statement, you can use that as a subquery for GROUP BY or other things:

    SELECT * FROM (
    (SELECT 1 AS ticked, col1, col2 FROM table1 INNER JOIN table2 USING (col3))
        UNION
    (SELECT 0 AS ticked, col1, col2 FROM table1)
    ) AS combined_table /*derived tables need a unique name*/
    GROUP BY col1 /*group by the unique col1 to stop duplicates*/
    ORDER BY ticked DESC
    
    0 讨论(0)
提交回复
热议问题