来自MYSQL数据库的结果,不是一个,而是来自几个表的结果

时间:2011-07-27 13:28:58

标签: mysql count distinct

所以我在这里需要看一些MYSQL数据库的结果,不是基于一个表,而是基于几个表的结果。

表说明:

Metaexplanation:

Tablename

Row1,Row2,Row3....Row(N)

Tables:

---------------
|table toy  |
------------------------------ 
|toy_id | name | description  |
------------------------------


--------------------
|table owned_toy  |
----------------------------
| owner  | toy_id          |
----------------------------


--------------------
|table toy_expansions |
-------------------------------
| expansion | toy_id          |
-------------------------------

我创建了一个查询来识别没有所有者分配的玩具

SELECT DISTINCT * from toy WHERE NOT EXISTS (SELECT * FROM ownedtoy WHERE owned_toy.toy_id = toy.id);

这很有效,我能够找出没有所有者的东西。

现在为了让事情变得更有趣,我试图找出一种方法来发现我在上面的查询中确定的每个玩具有多少扩展。

我可以使用以下方法计算玩具的扩展总数:

Select COUNT(expansion) from toy_expansions;

然而我需要的是看到每个尚未拥有所有者的DISTINCT玩具的扩展总数,并且需要对其进行排序,以便我看到第一个查询的结果和一个列“数字”扩展“列出了每个确定没有所有者的玩具的扩展数量

我希望能够通过将原始查询与这样的语句组合来添加结果:

Select COUNT(expansion) as "Number of expansions" from toy_expansions

另外,为了使它更难一点,我希望能够在一个查询中执行它而不创建额外的表等,即不对db本身进行任何更改。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

SELECT t.name, COUNT(te.expansion) AS NumberOfExpansions
    FROM toy t
        LEFT JOIN toy_expansions te
            ON t.id = te.toy_id
        LEFT JOIN owned_toy ot
            ON t.id = ot.toy_id
    WHERE ot.toy_id IS NULL
    GROUP BY t.name
相关问题