PDA

View Full Version : نحوه نمایش مجموع عکس های یک گالری و نمایش تعداد گالری



b.paseban
چهارشنبه 17 خرداد 1391, 19:22 عصر
سلام بر دوستان.
من میخوام داخل یه DataRepeater تعداد گالری های عکس ایجاد شده و بهمراه تعداد عکس هر گالری نمایش بدم.ولی نمی دونم چطوری باید این کوئری رو درست کنم که همه گالری ها رو بهمراه تعداد عکس هر گالری نمایش بده .
فیلدهای جدول CategoryGallery من بصورت زیره:
[CategoryGalleryID],[Title],[Description],[ImgShow],[AddedDate],[CountViewed],[AddedIP],[Status]
و فیلدهای جدول GalleryImg نیز بصورت زیر:
[GalleryID],[CategoryGalleryID],[Title],[Description],[ImgSmall],[ImgLarg],[AddedDate],[CountViewed][AddedIP],[Status]
SP که برای نمایش گالری های ایجاد شده بکار می برم بصورت زیره:


ALTER Procedure [dbo].[sp_Tbl_CategoryGallery_SelectAll]
As
Begin
Select
[CategoryGalleryID],
[Title],
[Description],
[ImgShow],
[AddedDate],
[CountViewed],
[AddedIP],
[Status]
From Tbl_CategoryGallery
End

SP من برای نمایش تعداد عکس هر گالری بصورت زیره:


ALTER Procedure [dbo].[sp_Tbl_GalleryImg_SelectCountImages]
@CategoryGalleryID Int
As
Select Count (*) From Tbl_GalleryImg WHERE [CategoryGalleryID] = @CategoryGalleryID

حمیدرضاصادقیان
شنبه 20 خرداد 1391, 07:17 صبح
سلام.

به این شکل بنویسید.


Select
[CategoryGalleryID],
[Title],
[Description],
[ImgShow],
[AddedDate],
[CountViewed],
[AddedIP],
[Status],
TGI.CntImage
From Tbl_CategoryGallery AS TCG
JOIN(Select Count (*) AS CntImage,CategoryGalleryId From Tbl_GalleryImg
GROUP BY CategoryGalleryId) AS TGI
ON TGI.[CategoryGalleryID] = TCG.CategoryGalleryId

b.paseban
دوشنبه 22 خرداد 1391, 21:08 عصر
با تشکر از توجه شما.
بعد از اجرای این کوئری این ارور به نمایش درآمد:


Msg 209, Level 16, State 1, Procedure SELECTImagesGallery, Line 11
Ambiguous column name 'CategoryGalleryID'.

کد شما:


USE [Name]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[SELECTImagesGallery]
As
Begin
Select
[CategoryGalleryID],
[Title],
[Description],
[ImgShow],
[AddedDate],
[CountViewed],
[AddedIP],
[Status],
TGI.CntImage
From Tbl_CategoryGallery AS TCG
JOIN(Select Count (*) AS CntImage,CategoryGalleryId From Tbl_GalleryImg
GROUP BY CategoryGalleryId) AS TGI
ON TGI.[CategoryGalleryID] = TCG.CategoryGalleryId
End

حمیدرضاصادقیان
چهارشنبه 24 خرداد 1391, 08:00 صبح
در Select اولین قسمت CategoryGalleryId رو به این شکل بنویسید. TCG.CategoryGalleryID

b.paseban
چهارشنبه 24 خرداد 1391, 14:08 عصر
با تشکر از راهنمایی شما.
من این کوئری رو برای یه جدول دیگه که برای نمایش اخبار ازش استفاده می کنم بکار گرفتم که یه مشکل برام ایجاد کرد که ممنون می شم راهنمایی کنید.
جدول اصلی که خبر ها رو داخلش درج می کنم شامل فیلدهای زیره:


[NewsID],[Title],[Description],[Body],[AddedDate],[AddedIP],[ImgSmall],[ImgLarg],[CountViewed],[Status],

یه جدول دیگه هم برای درج نظرات کاربران دارم که شامل فیلدای زیر میشه:


[CommentNewsID],[NewsID],[AddedName],[AddedDate],[AddedIP],[AddedEmail],[Body],[Status],

حالا میخوام با کوئری زیر همه خبرهای درج شده در جدول اخبار رو بهمراه تعداد نظرات هر خبر که اون نظر به تأئید مدیر سایت درآمده (فیلد Status از جدول نظرات مساوی 1 باشه)نمایش بدم اما خبرهایی رو نمایش میده که برای اون خبر نظر هم ارسال شده باشه.


ALTER Procedure [dbo].[SltCntCmntNews]
As
Begin
Select TOP(5)
TCG.NewsID,
[Title],
[Description],
[Body],
[AddedDate],
[AddedIP],
[ImgSmall],
[ImgLarg],
[CountViewed],
[Status],
TGI.CntCmnt
From Tbl_News As TCG
JOIN(Select Count (*) AS CntCmnt,NewsID From Tbl_CommentNews WHERE [Status] = 1
GROUP BY NewsID) AS TGI
ON TGI.[NewsID] = TCG.NewsID WHERE [Status]=1 Order BY NewsID DESC
End

b.paseban
جمعه 26 خرداد 1391, 14:16 عصر
این مشکل هم حل شد .
باید قبل از join این عبارت رو اضافه کنیم: LEFT OUTER
برای برگردوندن مقدار 0 برای مقادیر برگشت داده شده Null از CntCmnt (برای خبرهایی که نظری برای آن هی ارسال نشده باشد) هم از تکه کد زیر استفاده می کنیم.


ALTER Procedure [dbo].[SltCntCmntNews]
As
Begin
Select TOP(5)
TCG.NewsID,
[Title],
[Description],
[Body],
[AddedDate],
[AddedIP],
[ImgSmall],
[ImgLarg],
[CountViewed],
[Status],

CASE
WHEN TGI.CntCmnt IS NULL THEN 0
ELSE TGI.CntCmnt
END CntCmnt

From Tbl_News As TCG
LEFT OUTER JOIN(Select Count (*) AS CntCmnt,NewsID From Tbl_CommentNews WHERE [Status] = 1
GROUP BY NewsID) AS TGI
ON TGI.[NewsID] = TCG.NewsID WHERE [Status]=1 Order BY NewsID DESC

End

از آقای صادقیان هم بابت راهنمایی هاشون تشکر میکنم.