View Full Version : سوال: استفاده از distinct
niloofar norouzi
چهارشنبه 13 خرداد 1388, 16:49 عصر
با سلام
موقع اجرای query زیر با این error بر خورد می کنم:
The image data type cannot be selected as DISTINCT because it is not comparable.
Select distinct C.ID, P.NoPersoneli,P.Firstname,P.Lastname,P.Sex_ID,P.Na tionality_ID,P.NationalID,P.Company_ID,P.BirthDate ,C.[Validity],C.[IssueDate],C.[ExpiryDate],C.[Discription],C.[Licence_ID],C.[LicenceNO],
A.AircraftATC_ID,A.ClassRating_ID,P.[Image] From Personal P
join [Certificate] C on C.Personal_ID=P.Nopersoneli
join ATC A on A.Certificate_ID=C.ID
ممنون می شم راهنمایی بفرمایید چطوراین مشکلو حل کنم
با تشکر
Hamid.Kad
چهارشنبه 13 خرداد 1388, 17:10 عصر
خطا به این خاطر هست که DBMS اجازه نمیده برای فیلدهای نوع image از Distinct استفاده کنید. دلیلش هم منطقیه. چون نمیتونه تشخیص بده که تصاویر یکی هستند یا نه. (ممکنه یکی باشند ولی مثلاً یکی روشن تر از اون یکی باشه و ....) که در کل وقت زیادی از DBMS میگیره. فیلد تصویر رو حذف کنید.
niloofar norouzi
چهارشنبه 13 خرداد 1388, 17:53 عصر
اما من نیاز دارم تصویر در این query باشه
یعنی راهی نیست؟
Hamid.Kad
چهارشنبه 13 خرداد 1388, 18:22 عصر
یعنی واقعاً می خواهید از 2 تا تصویر Distinct بگیرید ؟
اگه هدفتون اینه بنظرم باید از روشهای برنامه نویسی استفاده کنید بجای استفاده از امکانات بانک اطلاعاتی. به نظرم یه جایی توی منطق برنامتون اشکال دارید! میشه بفرمائید هدفتون چیه ؟
niloofar norouzi
چهارشنبه 13 خرداد 1388, 18:50 عصر
نه،من می خوام رکوردهای تکراری حذف بشه برای هر شخص NoPersoneli فقط یکبار تکرار شه
حامد مصافی
چهارشنبه 13 خرداد 1388, 19:02 عصر
اگر بنده درست متوجه شده باشم و ستون ID کلید جدول باشد نیازی به distinct نیست.
niloofar norouzi
چهارشنبه 13 خرداد 1388, 19:21 عصر
درسته ID کلید جدول هست اما این فیلد به صورت auto increment در نظر گرفته شده ولی من می خوام
هر شخص که چند تاID داره یکبار نمایش داده شود.
یعنی حتما باید image حذف شه؟
niloofar norouzi
چهارشنبه 13 خرداد 1388, 21:06 عصر
این قسمت درست کار می کنه
Select distinct C.[Validity],C.[IssueDate],C.[ExpiryDate],C.[Discription],C.[Licence_ID],C.[LicenceNO],A.AircraftATC_ID,A.ClassRating_ID from [certificate] C
join ATC A on A.Certificate_ID=C.ID
اما فیلد های جدول personal را چه جوری اضافه کنم که مشکلی پیش نیاد؟
با تشکر
Hamid.Kad
چهارشنبه 13 خرداد 1388, 22:02 عصر
خوب اون فیلدهایی (بغیر از تصویر و ID) که میتونه یک فرد واحد رو مشخص کنه توی Distinct بذارید. اگه وجود فیلد تصویر الزامیه بجاش یه عدد به تصویر اختصاص بدید از اون عدد استفاده کنید...
حمیدرضاصادقیان
چهارشنبه 13 خرداد 1388, 22:13 عصر
سلام.شما اگر میتونی ساختار این دوتا جدولت رو بفرست و یک نمونه از رکوردهایی که توش ذخیره میشه. که راحتتر بشه کوئری رو نوشت.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.