簡體   English   中英

來自MYSQL數據庫的結果,不是基於一個,而是基於幾個表的結果

[英]Results from MYSQL database based, not one, but on results from a few tables

因此,在這里,我需要查看不是基於數據庫而是基於一些表的結果的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

同樣只是為了使其更加困難,我希望能夠在一個查詢中執行它而無需創建額外的表等,即無需對數據庫本身進行任何更改。

有任何想法嗎 ?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM