آژانس هواپیماییexchanging

سوال درمورد یک کوئری دیتابیس اکسس

شروع موضوع توسط balabala ‏28 نوامبر 2005 در انجمن asp , ASP.NET

  1. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    سلام!

    من سر ساخت این کوئری کلافه شدم، اصلا امکان داره در اکسس این کا رو کرد؟

    یک کوئری SELECT میخوام که اگر یک مقدار مشخصی با WHERE یا INNER JOIN در یک تیبل سوال شد، در برگشت در صورت وجودش yes یا no برگردونه.

    توی اکسس امکان پذیره؟
    مثلا برگشت SELECT * FROM product WHERE product_id=123 به جای برگشت یک لیست، yes و no باشه. این خودش INNER JOIN میشه، یعنی از تیبلهای دیگه هم من اطلاعات لیست می کنم ولی از این تیبل اگر با اون id وجود داشته باشه باید yes و در صورت عدم وجود no بده! :wacko: کمک! :(

    تشکر.
     
  2. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    S.O.S. S.O.S...
     
  3. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    این که خیلی راحته:
    SELECT "Yes" FROM product WHERE product_id=123

    اگر که شرط برقرار باشه و رکوردی با اون شرایط وجود داشته باشه Yes رو بر میگردونه و اگر هم که هیچی برنگردونه یعنی که No
     
  4. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    چه شکلی توی یک INNER JOIN بیارمش؟
    مثلا:
    SELECT a.name, b.product_name,a.id2 FROM addr as a INNER JOIN products as b ON a.id=b.id

    می خوام اگر a.id2 در تیبل b بودش yes برگردونه وگرنه (اگر شد) no.
     
  5. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    من 3 تا تیبل دارم: APP, OLD, MASTER

    در APP یکسری فیلد هست، ولی اصل کاری PARTNO خواهد بود. در MASTER فقط همین یک فیلد هست (PARTNO)، و در OLD هم یکسری فیلد و البته PARTNO.

    من باید اینها رو JOIN کنم و از PARTNO می تونم استفاده کنم. باید بطور مثال field1 , field2 رو از APP و field3 رو از OLD بگیرم و yes/no از MASTER در صورتی که اون PARTNO در MASTER باشه.

    یعنی بدون این مشکل yes/no این خواهد بود:
    کد:
    SELECT a.PARTNO, a.field1, a.field2, b.field3 FROM APP as a INNER JOIN OLD as b ON a.PARTNO=b.PARTNO WHERE a.PARTNO LIKE'%123%'
    حالا چه JOINی به این اضافه کنم که اگر PARTNO در MASTER وجود داشت یک ستون برگردونه yes و اگر نه برگردونه no یا هیچی بر نگردونه؟

    (یک رکورد بر نمی گرده، شاید چندتا برگرده)
     
  6. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    [​IMG]
     
  7. appbannerkhuniresbanner
  8. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    کمک....! :(
     
  9. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    به نظر پیچیده میاد ولی:
    کد:
    SELECT a.PARTNO, a.field1, a.field2, b.field3,(SELECT "Yes" FROM MASTER WHERE MASTER.PARTNO = a.PARTNO) AS Result FROM APP as a INNER JOIN OLD as b ON a.PARTNO=b.PARTNO WHERE a.PARTNO LIKE'%123%'
    :D
     
  10. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    دقیقا یک همچین چیزی باید باشه. ولی من این اررور رو ازش گرفتم:
    At most one record can be returned by this subquery.

    یعنی مشکل از کجاست؟
     
  11. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    کجا این ارور رو میگیری؟ تو خود اکسس کار میکنی؟
    میتونی اون سه تا جدول رو با اطلاعات نمونه بزاری تست کنم؟ چون من چند تا جدول با همون ساختار تو اکسس ساختم و تست کردم.
     
  12. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    اتچش کردم. البته برنامه رو توی وی بی می نویسم ولی خودت می تونی query1 رو تست کنی. نمی دونم مشکلش چیه!

    تشکر
     
  13. hamidch56

    hamidch56 کاربر تازه وارد

    تاریخ عضویت:
    ‏25 نوامبر 2005
    نوشته ها:
    26
    تشکر شده:
    0
    با سلام

    اگه درست متوجه مشکل شما شده باشم شما باید برای اینکار یک Modules بنویسید بر اساس شرطی که

    گذاشته اید :)
     
  14. avajang.com .leftavajang.com.right
  15. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    من در نهایت باید اینرو به یه DataGrid در وی بی bind کنم. نمی خوام در اکسس ازش استفاده کنم. منظورتون از ماجول نوشتن کد ویبی بود؟ در این صورت از یک مرحله bind کردن بیشتر میشه.

    تشکر
     
  16. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    [​IMG]
     
  17. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    درسته چون اون ساب کوئری برای جدولهای شما چند تا رکورد برمیگردوند مشکل پیش میومد. با یک TOP 1 مشکل برطرف میشه:
    کد:
    SELECT (SELECT TOP 1 "Yes"  FROM MASTER WHERE MASTER.PARTNO = a.PARTNO) AS exp1, a.PARTNO, b.STOCK, b.DESCRIP
    FROM APP AS a INNER JOIN OLD AS b ON a.PARTNO=b.PARTNO;
     
  18. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,321
    محل سکونت:
    یه خورده اونورتر
    مرسی! :lol:
    مشکلم رو حل کردی. [​IMG]
    واقعا متشکرم، خیلی گیرش بود، امیدوارم بتونم جبران کنم. :)

    تشکر
     
  19. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    :D :D :D :D