• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

خواندن یک مقدار از دیتاریدر در حالی که در حال خواندن چندین مقدار هست(چی گفتم؟)

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
بزار بگم میخوام چیکار کنم
من سایتم سایت مقالس صفحه ی اول سایتم لیست همه ی موضوعات به صورت لین وجود داره و چون تازه راه انداختم اکثر لینک ها توش مقاله نیست و بازدید کننده اعصابش خورد میشه هی میره میبینه خالیه
میخوام جلوی هر موضوع یه پرانتز باز کنم تعداد مقالات موجود توش رو بنویسم
لیست موضوعاتو اینجوری میخونم
کد:
  cm = New SqlCommand("select id,cat from artcat2", cn)
        Dim dr As SqlDataReader
        cn.Open()
        dr = cm.ExecuteReader
        DataList1.DataSource = dr
        DataList1.DataBind()
        dr.Close()
        cn.Close()
حالا نیاز دارم یه select دیگه بنویسم که بگم تعداد مقالاتی که موضوعشون مساوی آیدی ای که الان خوندم هست رو برگردونه
ینی این دستور
کد:
select count(id) from article where artcat2= ?
جای علامت سوال میخوام اون آیدی باشه که دستور اول خوندمش
حالا سوال اولا چجوری اون مورد خاص رو از دیتا ریدر بگیرم؟
ثانیا اصلا ترتیب تو این روش حفظ میشه؟ ینی تعداد مقالات جلوی موضوع مربوطه قرار میگیره یا اینکه ممکنه جابجا بزنه؟
اصلا روش خوبی هست؟ اگه خوبه بگید چیکارش کنم
اگه روش ضایه ایه یه روش خوب بگید
ممنون:happy:
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
فدات بشم این چه کاری داری انجام میدی اینجوری سايت بالا نمی آد که برای یک کانتر تعداد مقاله های یک گروه بری و یه بار وصل بشی به دیتابیس همه اینا رو میشه با یک SELECT خیلی ساده انجام داد . شمای جدول گروه و جدول مقاله رو بزار برات یه SELECT بنویسم حالشو ببری

یه نمونه ساده

کد:
SELECT a.Name , a.GroupID , (SELECT COUNT(*) FROM tblArticle WHERE GroupID = a.GroupID) 'ArticleCounter' FROM tblGroup a
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
با این هم میتونی به همون نتیجه برسی شروین جان :

کد:
SELECT 
	a.GroupID , a.Name , COUNT(b.NewsID) 'Counter'
FROM 
	tblArticle b,
	tblGroup a
WHERE
	b.GroupID = a.GroupID

GROUP BY a.GroupID , a.Name
UNION
SELECT a.GroupID , a.Name ,  0 'Counter'
FROM
	tblGroup a
WHERE
	a.GroupID NOT IN (SELECT DISTINCT(GroupID) FROM tblArticle)
ORDER BY
	a.GroupID

یه نمونه از خروجی :
4581059_selectshervin.JPG
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
آقا چرا شما فدای من بشی بزار من فدات بشم :D
من به دلیل مشکلی 2 روز نیستم
ولی اگه زحمت نباشه برات یه توضیح بدی اینا که گفتی ینی چه خیلی خوب میشه
میخوام بفهمم که بتونم بعدا هم کاری داشتم انجام بدم یه یه رفرنس خوب معرفی کنی
ممنون
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
سلام .
تی - اس کی ال که اول نوشتم که مشخصه ، یک SELECT خیلی ساده است که داخلش یک SELECT دیگه انجام شده . در مورد دومی هم مثل اولی :D از دو تا جدول یه SELECT انجام دادم چون از تابع COUNT استفاده کردم GROUP BY استفاده کردم . منتها بخش اول فقط رکوردهائی را میاره که حداقل یک مقاله توش باشه . اگه بخواهیم همه رو بیاره از UNION استفاده می کنیم . بعد UNION هم مشخصه لیست گروه های رو آوردم که هیچ مقاله ای توشون نیست . منبع خاصی هم سراغ ندارم . من خودم یک کتاب تو همین فورم آپلود کردم که آموزش T-SQL در 10 دقیقه بود . کتاب خیلی ساده و با مثال های بسیار خوب از انتشارات SAMS (زبان انگلیسی)
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
مرسی
اون کتابو دارم
حالا برگشتم درستش میکنم و نتیجه رو میگم
خیلی حال دادی
دستت طلا
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
سعی کن از اینجور T-SQL های که چند خط هستند و از چند تا Table یک Query میگیرند و ... را حتما یاد بگیری. چون خیلی به حل مشکلات کمک می کنه و برای گزارش گیری که اصلا یک نیاز اساسی هستند.
موفق باشی.
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
آقا ممنون کار کرد
فقط یه چیزی من مقدار کانتر رو که تعدا مقالاتو گرفته چجوری بزارم داخل پرانتز
میخوام اینجوری نشون بده HIV(50)d (اون d رو همینجوری گذاشتم که پرانتز سرجاش وایسه)
این ستونای دیتا ریدر هست که باهاش اسم موضوع رو میگیرم و لینکش میکنم به صفحه موضوع حالا واسه اینکه داخل پرانتزه اون مقدار شمارش شده رو نشون بده چیکار کنم؟
کد:
<td>
<a href=relatedarticle.aspx?cat=<%# container.dataitem("id") %>>
<%# container.dataitem("cat")%> [COLOR="Red"]()[/COLOR]
</a>
</td>
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
من نمیدونم که چه جوری اطلاعات را در سايت نمایش میدی ولی فکر کنم از DataSet استفاده میکنی . خوب مشخصه اینور و اونورش پرانتز بزار:D
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
نه از دیتا ریدر استفاده میکنم
میخوام فقط عدد شمارش شده تو پرانتز باشه:D
 
بالا