2013-07-31 17 views
0

有3代表「用戶」,「博客」和「圖像」 一個用戶可以擁有多個博客SQL查詢中給定關係

一個博客可以有多個圖片和簽證詩句 是多圖像可用於多個博客

我需要在一個單一的博客圖像的總數查詢..

而且我也需要爲每個用戶圖像的總數查詢..

請指導無線次查詢來獲取數據..

我創建的數據庫是這樣的:

創建表作者(ID INT,名稱爲nvarchar(MAX));

創建表圖像(ID INT,ImagePath的爲nvarchar(最大));

創建表博客(ID INT,名稱爲nvarchar(最大),AUTHORID INT);

創建表BlogImages(ID INT,BlogId INT,圖像標識INT);

ALTER TABLE博客添加外鍵(AUTHORID)參考文獻作者(Id)的

ALTER TABLE BlogImages添加外鍵(BlogId)參考文獻博客(Id)的

ALTER TABLE BlogImages添加外鍵(圖像標識)參考圖像(Id)的

在上述關係我有使用同一圖像

+1

ca你在www.sqlfiddle.com上提供了你的表格的例子嗎? – BeNdErR

+0

請提供一些示例數據 –

+0

先生,我已經提供了我的表格..所以,現在你可以指導我正確 – user2631770

回答

0

回覆修改問題:

對於單個圖像的數博客:

select COUNT(Image.Id) 
from Image, BlogImages 
where Image.Id = BlogImages.ImageId 
and BlogImages.BlogId = @BlogId 

其中@BlogId是您要爲圖片計數的博客的ID。

對於圖像的數量由用戶:

select COUNT(Image.Id) 
from Image, BlogImages, Blog 
where Image.Id = BlogImages.ImageId 
and BlogImages.BlogId = Blog.Id 
and Blog.AuthorId = @AuthorId 

其中@AuthorId是要爲計算圖像的用戶的ID。

如果您不想計算兩次相同的圖像,您應該在select關鍵字後面添加distinct

+0

先生,我已經提供了我的表..所以,現在你可以正確指導我 – user2631770

+0

@ user2631770我更新了我的答案適合你修改後的問題。 – Rob

+0

爲什麼不使用正確的連接? – Sam

0

爲了得到的總數具有blogId和圖像標識,這意味着單個圖像標識可以有多個blogIds,所以多個博客的表BlogImages下面的查詢

select U.userId,count(*) from 
(
select U.userId,I.imageId from user U,blog B, images I 
where B.userId==U.userId and B.blogId==I.blogId 
) 
group by U.userId 

而且在單個博客使用圖像的總數每個用戶嘗試圖像以下

select B.blogId,count(*) from 
(
select B.blogId,I.imageId from blog B,images I 
where B.blogId==I.blogId 
) 
group by B.blogId 
+0

先生,我已經提供了我的表..所以,現在你可以指導我正確 – user2631770