PDA

View Full Version : ۲ نتیجه به صورت Union



fakhravari
دوشنبه 02 آذر 1394, 17:49 عصر
سلام
من ۲ نتیجه دارم که ۲ select مجزا است و هر ۲ هم شرط دارم و هم مرتب سازی

مشکلی که هست در این روش مرتب سازی خطا میده و نمیزاره union. بشه.
مشکل چطوری حل میشه

alireza_s_84
دوشنبه 02 آذر 1394, 18:08 عصر
سلام
من ۲ نتیجه دارم که ۲ select مجزا است و هر ۲ هم شرط دارم و هم مرتب سازی

مشکلی که هست در این روش مرتب سازی خطا میده و نمیزاره union. بشه.
مشکل چطوری حل میشه
کوئری و شماتیک جدولها رو قرار بدین

fakhravari
دوشنبه 02 آذر 1394, 21:50 عصر
کلا یه مثال ساده

declare @P nvarchar(50) = N'آبادان';
select * from City where [Name]=@P order by [Name]
union all
select * from City where [Name]=@P order by [Name]

ASKaffash
سه شنبه 03 آذر 1394, 07:23 صبح
سلام
order by اولی نیاز نیست

fakhravari
سه شنبه 03 آذر 1394, 11:25 صبح
با سلام
خب من نیاز دارم به ترتیب دست نخوره. اون مثال بالا یک مثاله شما فرض کنید نباید مرتب هر 2 نتیجه عوض بشه

ham3d1988
سه شنبه 03 آذر 1394, 12:05 عصر
سلام

declare @P nvarchar(50) = N'آبادان';
SELECT * FROM
(
select * from CityTbl c WITH (NOLOCK) WHERE CityName=@P
UNION ALL
select * from CityTbl c1 WITH (NOLOCK) where CityName=@P
)X
ORDER BY x.CityName

ASKaffash
سه شنبه 03 آذر 1394, 12:45 عصر
سلام

مثلا" اینطوری :
declare @P nvarchar(50)=N'';
select X=1,*from City where [Name]=@P
unionall
select X=2,*from City where [Name]=@P
orderby X,[Name]

fakhravari
سه شنبه 03 آذر 1394, 13:54 عصر
یکم توضیح می دین
اون x اولی چیه و دومی چیه

و حساب کنین من یک جوین در چند جدول دارم برای هر کدومش و به این سادگی به فیلداش دسترسی ندارم

reza_ali202000
سه شنبه 03 آذر 1394, 16:36 عصر
سلام
میاد بر اساس ایکس که توی سلکت اولی یک هست مرتب میکنه و بعدش بر اساس مثلا شهر.
اول تمام اونایی که هستن میاره بعد اونایی که دو هستن.
اینجوری سلکت اولی رو اول مرتب میکنه بعد میره سراغ سلکت دومی

fakhravari
پنج شنبه 05 آذر 1394, 21:15 عصر
با سلام

SELECT X=1, Student.StudentID, Student.FullName, EducationLevel.Name AS EducationLevelName, Education.Name AS EducationName, University.Name AS UniversityName, Student.UniversityID
FROM Student INNER JOIN
University ON Student.UniversityID = University.ID INNER JOIN
EducationLevel ON Student.EducationLevelID = EducationLevel.ID INNER JOIN
Education ON Student.EducationID = Education.ID
where Student.UniversityID=1

union all

SELECT X=2, Student.StudentID, Student.FullName, EducationLevel.Name AS EducationLevelName, Education.Name AS EducationName, University.Name AS UniversityName,
Student.UniversityID
FROM Student INNER JOIN
University ON Student.UniversityID = University.ID INNER JOIN
EducationLevel ON Student.EducationLevelID = EducationLevel.ID INNER JOIN
Education ON Student.EducationID = Education.ID
where Student.UniversityID=6

order by X


من چطوری بگم مثلا به ترتیب x1.fullname,x1.studentid,x2.fullname مرتب بشن؟:متفکر:

reza_ali202000
جمعه 06 آذر 1394, 00:52 صبح
با سلام

SELECT X=1, Student.StudentID, Student.FullName, EducationLevel.Name AS EducationLevelName, Education.Name AS EducationName, University.Name AS UniversityName, Student.UniversityID
FROM Student INNER JOIN
University ON Student.UniversityID = University.ID INNER JOIN
EducationLevel ON Student.EducationLevelID = EducationLevel.ID INNER JOIN
Education ON Student.EducationID = Education.ID
where Student.UniversityID=1

union all

SELECT X=2, Student.StudentID, Student.FullName, EducationLevel.Name AS EducationLevelName, Education.Name AS EducationName, University.Name AS UniversityName,
Student.UniversityID
FROM Student INNER JOIN
University ON Student.UniversityID = University.ID INNER JOIN
EducationLevel ON Student.EducationLevelID = EducationLevel.ID INNER JOIN
Education ON Student.EducationID = Education.ID
where Student.UniversityID=6

order by X


من چطوری بگم مثلا به ترتیب x1.fullname,x1.studentid,x2.fullname مرتب بشن؟:متفکر:


order by X,fullname,studentid

fakhravari
جمعه 06 آذر 1394, 09:31 صبح
خب این فیلدا همنام هستند چطوری بگیم اول x1 این فیلداش بعد x2 این فیلداش.
شاید ترتیب x2 مثل x1 نباشه

fakhravari
دوشنبه 09 آذر 1394, 19:25 عصر
دوستان در مورد تاپیک 12 هنوز جوابی نرسیدم.

یعنی 2 متب سازی مختلف

neda555
دوشنبه 16 آذر 1394, 19:54 عصر
سلام این مشکل من هم هست چه طور باید برطرفش کرد؟

ASKaffash
سه شنبه 17 آذر 1394, 07:19 صبح
سلام
البته من متوجه کاربرد این موضوع نمیشم ولی شما میتوانید در هردو Select یک ستون مجازی ایجاد کنید با Case When Then End و براساس این ستون Sort کنید

fakhravari
سه شنبه 24 آذر 1394, 10:58 صبح
سلام
البته من متوجه کاربرد این موضوع نمیشم ولی شما میتوانید در هردو Select یک ستون مجازی ایجاد کنید با Case When Then End و براساس این ستون Sort کنید

سلام اگه ممکن یه مثال بزنید

ASKaffash
چهارشنبه 25 آذر 1394, 09:13 صبح
سلام
به این دستور براساس جدول نگاه کنید سورت براساس ستون B برای جدول دوم بی معنی است :


Select X=1,A,B
From Test
UnionAll
Select X=2,A,B
From Test
Order By X,B,A

fakhravari
جمعه 27 آذر 1394, 19:22 عصر
بهتر یه مثال بهتر بزنم

مثلا میخواهیم 2 رکورد اول و 2 رکورد اخر بیاریم

2 رکورد اول بر اساس یه چیزایی مثلا سن و وزن
2 رکورد اخر بر اساس یه چیزی مثلا قد و سرعت


مرتب شدن حالا چطوری نمایش بدیم؟

ASKaffash
شنبه 28 آذر 1394, 07:17 صبح
سلام
یک چیزی شبیه این کد :

Select X=1,A,B,C=CaseWhen A<=20 Then A Else 0 End
From Test
UnionAll
Select X=2,A,B,C=CaseWhen A>=30 Then A Else 0 End
From Test
OrderBy C Desc,X