PDA

View Full Version : SELECT روی 3 تا جدول << فوری فوری >>



mamad-TT
چهارشنبه 12 شهریور 1393, 12:54 عصر
با سلام به همه اساتید
من 3 تا جدول دارم یکیش
Users
-------
1-UserID
2-UserName(نام کاربر)
3-UserNo(کد کاربر)
هست و اون یکی دیگه

ViolationRegister
---------
1-ViolationRegisterID
2-RegisterID(کد کاربر ثبت کننده خطا)
3-OffenderID(کد کاربر خاطی)
4-ConfirmerID(کد کاربر رسیدگی کننده به خطا)
5-ViolatioID(کد خطا)

و آخرین جدول

Violation
----------
1-ViolationID(کد خطا)
2-ViolationName(نام خطا)
3-ViolationPoint(امتیاز منفی)
اطلاعات توی جدول ViolationRegister به این شکل ذخیره شده:




ViolatioID
ConfirmerID
OffenderID
RegisterID
ViolationRegisterID


1
2
1
2
1



2
3
2
1
2


3
2
3
2
3



حالا من میخوام یک select روی این جدولهام بزنم که در نتیجش به جای نشون دادن شماره ID اسم فیلد مرتبط با ID رو بهم نشون بده
چند مدل select زدم ولی به خواستم نرسیدم
مثلا کل سطرهارو نام مربوط به ID اولین ستون اولین سطر نشون میداد
لطفا کمک کنید دوستان
بدجوری گیر کردم و عجله هم دارم
بازهم ممنون

ham3d1988
پنج شنبه 13 شهریور 1393, 08:19 صبح
سلام از SubQuery استفاده کنید.



select
(select U.UserName from Users U where U.UserID=VR.ViolationRegisterID)
,(select U.UserName from Users U where U.UserID=VR.RegisterID)
,(select U.UserName from Users U where U.UserID=VR.OffenderID)
,(select U.UserName from Users U where U.UserID=VR.ConfirmerID)
,(select U.UserName from Users U where U.UserID=VR.ViolatioID)

from ViolationRegister VR

ابوالفضل عباسی
پنج شنبه 13 شهریور 1393, 08:54 صبح
بله اگر subquery استفاده کنید قطعا مشکل شما حل خواهد شد:چشمک:

mamad-TT
جمعه 14 شهریور 1393, 18:14 عصر
سلام دوستان
ممنون از توجه و راهنماییتون
من خودم یه جوری تونستم مشکل رو حل کنم و فراموش کردم که نتیجه کارم رو اینجا به اشتراک بذارم
البته فکر کنم راه منم مثل روش شماست
من اینکاررو کردم

select ViolationRegisterID,(select Username from Usernames where UsernameID = UsernameIDRegister) as register, (select Username from Usernames where UsernameID = UsernameIDConfirmer) as Confirmer,
(select Username from Usernames where UsernameID = UsernameIDOffender) as Offender,
dbo.getShamsi(DateTimeIns) as Date ,
(select ViolationTxt from CiViolation where CiViolation.ViolationID = ViolationRegister.ViolationID) as Violation,
ViolationPenaltyPrice as Price , ViolationNegativeRating as NegativePoint ,
WarningST = Case warning when 'False' then 'ندارد' else 'دارد' end
from ViolationRegister