我目前工作的一個數據庫項目和存在的問題之一要求如下:在Sqlite3中執行FULL OUTER JOIN以獲得兩列的組合?
該類型表包含25項。 MediaType表包含5個 條目。編寫一個SQL查詢以生成一個包含三列和125行的表格。一列應包含MediaType名稱的列表;一列 應該包含流派名稱的列表;第三列應該包含具有媒體類型和流派的每種組合的音軌的數量的計數 。對於 例如,一行是:「搖滾MPEG音頻文件XXX」,其中xxx是 數MPEG搖滾曲目,即使值爲0
認識到這一點,我相信我會需要使用Sqlite3不支持的FULL OUTER JOIN。令我困惑的部分是使用組合生成列。下面,我附上了我嘗試過的兩種方法。
create view T as
select MediaTypeId, M.Name as MName, GenreId, G.Name as GName
from MediaType M, Genre G
SELECT DISTINCT GName, MName, COUNT(*) FROM (
SELECT *
FROM T
OUTER LEFT JOIN MediaType
ON MName = GName
UNION ALL
SELECT *
FROM Genre
OUTER LEFT JOIN T
) GROUP BY GName, MName;
然而,返回近250行和GROUP BY
或JOIN
(S)是完全錯誤的。
我也試過:
SELECT Genre.Name as GenreName, MediaTypeName, COUNT(*)
FROM Genre LEFT OUTER JOIN (
SELECT MediaType.Name as MediaTypeName, Track.Name as TrackName
FROM MediaType LEFT OUTER JOIN Track) GROUP BY GenreName, MediaTypeName;
哪些返回125行,但他們都有的相同的計數,導致我相信GROUP BY
是錯誤的。
而且,這裏是數據庫的架構:
https://www.dropbox.com/s/onnbwqfrfc82r1t/IMG_2429.png?dl=0
下次嘗試提供 [** SqlFiddle **](http://sqlfiddle.com/#!15/5368b/6),以便我們更好地理解問題並給出更快的答案 –
不知道是否存在@JuanCarlosOropeza,但下次肯定會使用它。謝謝! – user3146758
比圖片好得多;)也可以包含一些示例數據並要求輸出 –