ورود

View Full Version : مشکل در گذاشتن شرط روی جدول با And یا or



babak2000
دوشنبه 11 شهریور 1392, 11:41 صبح
با سلام به اساتید
ما یه جدول داریم بصورت زیر

نام نام تجهیزات

1-علی واکر
2-علی عصا
3-حسین واکر
4-رضا عصا

حالا میخوام سلکت (Select) بزنم و شرط بذارم کسانیکه هم واکر گرفتن و هم عصا را نشون بده

با شرط Or همه را میاره با شرط And هم هیچکدوم

خواهشن اگه ساده هست یا تکراری جواب بدین بعدن خواستین پاک کنید

محمد سلیم آبادی
دوشنبه 11 شهریور 1392, 13:27 عصر
SELECT name
FROM table
WHERE tajhizat IN ('walker', 'asa')
GROUP BY name
HAVING COUNT(*) = 2

babak2000
دوشنبه 11 شهریور 1392, 14:31 عصر
مرسی محمد عزیز
مشکل ما اینکه دو تا جدول داریم
1-جدول اطلاعات فردی : شامل کد ملی -نام -نام خانوادگی
2-جدول تجهیزات گرفته شده : شامل کد ملی-نام کالا-نوع کالا-قیمت کالا

حالا یک ویو (View) ساختیم از این دو جدول شامل : کد ملی -نام -نام خانوادگی-نام کالا

خوب دستور سلکت (Select) از ویو اینجوری نوشته شده :



SELECT FirstName, LastName, CompanyID, NCode, FatherName, nPercent, NationalCode
FROM View_Report_Payesh
WHERE (NameTools = N'عصا') OR
(NameTools = N'واکر')
GROUP BY FirstName, LastName, CompanyID, NCode, FatherName, nPercent, NationalCode


با این دستور هر کسی که واکر یا عصا گرفته را میاره ولی ما میخواهیم کسی که هر دو تا را گرفته (عصا و واکر) با هم را نمایش بده

اگه Having را اضافه کنم چون با Group و Select فرق میکنه هیچی را نشون نمیده

توی انجمن SqlServer هم پرسیدم ولی انگار سوالم خیلی سخت بود یا اینکه خوب نتوستم توضیح بدم

http://www.sqlservercentral.com/Forums/Topic1490544-392-1.aspx?Update=1

lastmory
دوشنبه 11 شهریور 1392, 16:23 عصر
با سلام این سلکت اونایی رو نشون میده که واکر و عصا گرفتن
البته اونایی که تعداد واکر و عصاشون بزرگتر از صفر هست
Select * From
(
SELECT FirstName
, LastName
, CompanyID
, NCode
, FatherName
, nPercent
, NationalCode
, (select COUNT (*) From Tools_Information K Where K.NationalCode = R.NationalCode And K.NameTools = N'Cane')COUNT_cane
, (select COUNT (*) From Tools_Information K Where K.NationalCode = R.NationalCode And K.NameTools = N'Walker')COUNT_walker
FROM View_Report R
GROUP BY FirstName
, LastName
, CompanyID
, NCode
, FatherName
, nPercent
, NationalCode
)V
Where (Isnull(V.COUNT_cane , 0) > 0 And Isnull(V.COUNT_walker,0) > 0)