PDA

View Full Version : مشکل در دستور SELECT



programerinfonet
چهارشنبه 26 تیر 1392, 18:13 عصر
سلام دوستان
107428
تو عکس بالا رکورد دوم رو وشاهده کنید
من میخوام به جای عدد 2 نام شخصی که کدش 2 هستش از جدول اشخاص نمایش داده شود و همین طور تو فیلد چهارم هم همین طور یعنی نام شخصی از جدول اشخاص نمایش داده شود که کدش 1 هست
در واقع از فیلد آی دی جدول اشخاص دو بار باید استفاده شود اما من کد زیر رو نوشتم هیچ چیز نمایش نمیده
SELECT Payment.PID, Account.ANumber, Account.ANumber, Payment.PAmount, Payment.Pdate, Payment.PDescription
FROM Account INNER JOIN Payment ON (Payment.PTId = Account.AID) AND (Account.AID = Payment.PFId);

یعنی 1و2 رو نمایش نمیده باید هر دو عدد یا 1 باشد یا 2 یعنی باید برابر باشن
چی کار کنم که درست بشه
ممنون

aslan
چهارشنبه 26 تیر 1392, 19:36 عصر
سلام
یک روش :
دو بار جوین کنید - یکی برای PFId و یکی هم برای PTId

programerinfonet
چهارشنبه 26 تیر 1392, 20:07 عصر
من هر کاری کردم نشد
این کد رو چه طور بکنم 2 تا INNER JOIN

SELECT Payment.PID, Account.ANumber, Account.ANumber, Payment.PAmount, Payment.Pdate, Payment.PDescription
FROM Account INNER JOIN Payment ON (Payment.PTId = Account.AID) AND (Account.AID = Payment.PFId);

plus
چهارشنبه 26 تیر 1392, 20:16 عصر
یعنی شما دو شخص مختلف رو باید برای هر سطر بیارید؟ من فرض میکنم فیلد مربوط به نام شخص Name و نام جدول اشخاص، Account هست:


SELECT
Payment.ID,
Account1.Name AS AccountName1,
Account2.Name AS AccountName2
FROM Payment INNER JOIN Account Account1 ON (Payment.PTId = Account1.AID)
INNER JOIN Account Account2 ON (Payment.PFId = Account2.AID)

همه فیلد ها رو ننوشتم میتونید اضافه کنید.

programerinfonet
چهارشنبه 26 تیر 1392, 21:25 عصر
من از این کد هیچ سر در نیاوردم
ببینید جدول من 3 تا فیلد داره
دریافت کننده
پرداخت کننده
مبلغ
که دریافت کننده و پرداخت کننده هر دو در یک جدول به نام اشخاص هستن که کداشون تو جدول پرداخت ذخیره میشه حالا من میخوام جای این کدا اسماشون بیاد یعنی دو دستور جوین ولی به شکلی که بین دو جدول هستش

Mohammadm
چهارشنبه 26 تیر 1392, 21:41 عصر
فرض بر اینکه جدول اشخاص person با فیلدهای زیر باشه
ID : primary
Fname
Lname
و جدول پرداخت کننده با نام tblPardakt شامل فیلدهای زیر باشه
ID , ID

یکی برای دریافت کننده(ID) و دیگری برای پرداخت کننده(ID) در این صورت برای نمایش نامهای هر دو شخص به صورت زیر عمل میکنیم
select A.Fname,A.Lname,B.Fname,B.Lname from person as A,person As B,tblpardakht
where A.ID=tblpardakht.ID and B.ID=tblpardakht.ID

programerinfonet
چهارشنبه 26 تیر 1392, 22:15 عصر
دوست عزیز من کد شما رو نوشتم اما جواب نداد
ببین این بانکمه107446

programerinfonet
پنج شنبه 27 تیر 1392, 00:12 صبح
یکی بیاد کمک
107450
دقیقأ منظورم اینه
یک join رو میتونم بنویسم اما دو تا شده به مشکل بر خوردم

mahdi_7610
پنج شنبه 27 تیر 1392, 00:25 صبح
سلام

به این صورت باید بنویسی


SELECT dbo.Person.ID, dbo.tblPardakt.Pname, dbo.Person.Pform, dbo.Person.Pto, dbo.Person.Mablagh
FROM dbo.Person INNER JOIN dbo.tblPardakt ON dbo.Person.ID = dbo.tblPardakt.ID

plus
پنج شنبه 27 تیر 1392, 00:29 صبح
شما اسم این دو جدول رو ننوشتین تا من براتون عبارت دقیق رو بنویسم.فرض کنیم بالایی(توی عکس) payment باشه و پایینی person.دقت کنید چون ما دوبار به جدول person، عمل join رو انجام میدیم، از اسامی مستعار p1 و p2 در عبارت استفاده کردم:

SELECT
payment.ID,
P1.Pname AS PersonNameFrom,
P2.Pname AS PersonNameTo,
payment.mablagh
FROM payment INNER JOIN person P1 ON (payment.pfrom = P1.PID)
INNER JOIN person P2 ON (payment.pto = P2.PID)

aslan
پنج شنبه 27 تیر 1392, 00:30 صبح
SELECT * From ((Payment Inner Join People As P1 On Payment.Pfrom=P1.PID )
Inner Join People As P2 ON Payment.Pto=P2.PID)

Mohammadm
پنج شنبه 27 تیر 1392, 00:42 صبح
یکی بیاد کمک
107450
دقیقأ منظورم اینه
یک join رو میتونم بنویسم اما دو تا شده به مشکل بر خوردم

با توجه به تصویر جدولتون فرض رو بر این میزاریم که جدول بالا اسمش tblpardakht و جدول پایین اسمش person باشه دستورش به این شکل میشه
select A.Pname,B.Pname,mablagh from person as A,person As B,tblpardakht
where tblpardakht.pfrom=person.PID and tblpardakht.pto=person.ID
اگر بازم مشکل داشتید متن دستورتونو بنویسید تا ببینیم مشکلتون از کجاست

programerinfonet
پنج شنبه 27 تیر 1392, 10:09 صبح
خیلی ممنون از همه ی دوستان
من فقط تونستم این کد رو استفاده کنم
اونم 10 فیلد اضافه ی دیگه هم کنارش نمایش میده
SELECT * From ((Payment Inner Join People As P1 On Payment.Pfrom=P1.PID )
Inner Join People As P2 ON Payment.Pto=P2.PID)
من شوالم رو خیلی ساده مطرح کردم نمی دونم چرا اینقدر جوابش پیچیدست
کلأ تو یک جدول تو یک رکورد کد دو شخص وجود داره که میخوام جای کداشون اسمشون نمایش داده بشه
بی زحمت توی همین بانکی که بالا ضمیمه کردم اول تست کنید
ممنون

aslan
پنج شنبه 27 تیر 1392, 10:27 صبح
خیلی ممنون از همه ی دوستان
من فقط تونستم این کد رو استفاده کنم
اونم 10 فیلد اضافه ی دیگه هم کنارش نمایش میده
SELECT * From ((Payment Inner Join People As P1 On Payment.Pfrom=P1.PID )
Inner Join People As P2 ON Payment.Pto=P2.PID)
من شوالم رو خیلی ساده مطرح کردم نمی دونم چرا اینقدر جوابش پیچیدست
کلأ تو یک جدول تو یک رکورد کد دو شخص وجود داره که میخوام جای کداشون اسمشون نمایش داده بشه
بی زحمت توی همین بانکی که بالا ضمیمه کردم اول تست کنید
ممنون

اونم 10 فیلد اضافه ی دیگه هم کنارش نمایش میده
سلام
دوست عزیز کافیه بجای ستاره اسامی فیلدهای مورد نظرتو بنویسی