PDA

View Full Version : راهنمایی برای ایجاد شرط روی کوئری



nafisehk
چهارشنبه 15 آبان 1392, 09:00 صبح
رو این کوئری


select ci1.cntID,ci2.cntName as ParentName,ci1.cntName+'-'+Isnull(ci2.cntName,'') as ChildAndparent , ci1.cntType,ci1.cntName,ci1.cntFirstName,ci1.cntLa stName,ci1.cntRole,ci1.cntCompanyCntID,ci1.cntEmai l,ci1.cntWebSite,ci1.cntTelNumbers,ci1.cntFaxNumbe r,ci1.cntAddress,ci1.cntDescription from ContactInfo

ci1 left join ContactInfo ci2

on ci1.cntCompanyCntID=ci2.cntID

where ci1.RecordDeleted!=1



چه جوری شرط بزارم که اگه ci2.cntname خالی بود اون دش و برداره
ممنون میشم راهنماییم کنید

mohsen_popo
چهارشنبه 15 آبان 1392, 09:19 صبح
منظورتان کجای این شرط ....

قبل از select بعد از اون ...کجا می خواید شرط بزارید......؟ بیشتر توضیح بدین

nafisehk
چهارشنبه 15 آبان 1392, 09:57 صبح
منظورتان کجای این شرط ....

قبل از select بعد از اون ...کجا می خواید شرط بزارید......؟ بیشتر توضیح بدین
????


...کجا می خواید شرط بزارید......؟

چه جوری شرط بزارم که اگه ci2.cntname خالی بود اون دش و برداره

نتیجه این select اینجوریه
فرزند-پدر
میخوام اگه پدر مقداری نداشت
اینجوری نشه
فرزند-
(یعنی دش و برداره)

مهرداد صفا
چهارشنبه 15 آبان 1392, 10:23 صبح
سلام.
اولا جای این تاپیک تالار T-sql است.
دوما:


select isNull(name,'-') from table

nafisehk
چهارشنبه 15 آبان 1392, 10:43 صبح
select isNull(name,'-') from table

یا شما سوالم و متوجه نشدید یا من ج و نفهمیدم، این دستور اگه Name مقداری نداشته باشه - برمیگردونه من میخوام اگه مقداری فیلد پدر خالی بود بعد فیلد فرزند - و نزاره
:لبخندساده:

Reza_Yarahmadi
چهارشنبه 15 آبان 1392, 12:36 عصر
میتونید بصورت زیر عمل کنید
CONCAT(ci1.cntName, '-' + ci2.cntName)
--OR
ci1.cntName + CASE WHEN ci2.cntName IS NULL '' ELSE '-' + ci2.cntName END

مهرداد صفا
چهارشنبه 15 آبان 1392, 13:19 عصر
یا شما سوالم و متوجه نشدید یا من ج و نفهمیدم، این دستور اگه Name مقداری نداشته باشه - برمیگردونه من میخوام اگه مقداری فیلد پدر خالی بود بعد فیلد فرزند - و نزاره
:لبخندساده:

می بخشید. من متوجه منظور نشده بودم.
علاوه بر case که آقای Reza_Yarahmadi فرمودند در sqlServer 2012 از IIF (http://technet.microsoft.com/en-us/library/hh213574.aspx) هم میتونید استفاده کنید.

nafisehk
چهارشنبه 15 آبان 1392, 13:32 عصر
میتونید بصورت زیر عمل کنید
CONCAT(ci1.cntName, '-' + ci2.cntName)
--OR
ci1.cntName + CASE WHEN ci2.cntName IS NULL '' ELSE '-' + ci2.cntName END

ج نداد خطا داره
is null به null تغییر دادم همون خروجی قبلی و داد(فرزند-):افسرده:

nafisehk
چهارشنبه 15 آبان 1392, 13:35 عصر
ج نداد خطا داره

عبارت case چی باید باشه؟؟
تغییرش دادم

ci1.cntName + CASE ci2.cntName WHEN NULL then '' ELSE '-' + ci2.cntName END


همون خروجی قبلی و داد(فرزند-):افسرده:

...........

nafisehk
چهارشنبه 15 آبان 1392, 13:50 عصر
می بخشید. من متوجه منظور نشده بودم.
علاوه بر case که آقای Reza_Yarahmadi فرمودند در sqlServer 2012 از IIF (http://technet.microsoft.com/en-us/library/hh213574.aspx) هم میتونید استفاده کنید.

:)
دستور case ی ج نداد دیتابیسم 2008 هستش

Reza_Yarahmadi
چهارشنبه 15 آبان 1392, 13:55 عصر
دستور رو کامل ننوشتم:گیج:
اصلاحش کنید
ci1.cntName + CASE WHEN ci2.cntName IS NULL THEN '' ELSE '-' + ci2.cntName END
برای مشکل شما استفاده از دستور Concat مناسبتره.

nafisehk
چهارشنبه 15 آبان 1392, 14:00 عصر
دستور رو کامل ننوشتم:گیج:
اصلاحش کنید
ci1.cntName + CASE WHEN ci2.cntName IS NULL THEN '' ELSE '-' + ci2.cntName END
برای مشکل شما استفاده از دستور Concat مناسبتره.




خوب همینی هستش که گفتم تغیر دادم اما جواب نداد


ci1.cntName + CASE ci2.cntName WHEN NULL then '' ELSE '-' + ci2.cntName END


خطای استفاده از کانکت
'CONCAT' is not a recognized built-in function name.

nafisehk
چهارشنبه 15 آبان 1392, 14:35 عصر
این ج داد

ci1.cntName + CASE WHEN ci2.cntName='' THEN '' WHEN ci2.cntName IS NULL THEN '' ELSE '-' + ci2.cntName END as ChildAndparent