שלח תשובה

זירת השאלות

315
צפיות
9
תשובות

multiple selects in stored procedur

,‏ 29 בדצמבר, 2005

מישהו יודע איך לכתוב SP שמביא נתונים ממספר טבלאות?, לדוגמא:


select top 10 * from Table1
select top 10 * from Table2


תגיות:

9 תשובות

  1. gilad123 הגיב:

    כמו בשאילתא רגילה
    כותבים SP כמו שכותבים שאילתא רגילה (חוץ מהקטע של שליחת והחזרת פרמטרים)


    SELECT TOP 10 * FROM t1 , t2
    WHERE t1.id = t2.fk

    אם אתה לא יודע לאחד טבלאות גם בשאילתא רגילה תבדוק במדריך, בעיקרון האיחוד נקרא join

  2. tal25 הגיב:

    לא לזה התכוונתי
    אני רוצה באותו SP למשוך ולהציג נתונים ממספר טבלאות שאינן קשורות אחת לשניה.
    פשוט במקום לרשום 3 SP שמושכים את 10 הרשומות האחרונות מכל טבלה אני רוצה לרשום SP אחד עם שלושה select

  3. gilad123 הגיב:

    אתה רוצה את כל השורות?
    אם אתה רוצה רק נתונים בודדים מכל טבלה אז אתה יכול להגדיר כמה משתני output
    אם אתה רוצה להחזיר שלושה RS, אני לא יודע

  4. yarono הגיב:

    תשתמש ב – NextRecordset
    תכתוב את שלושת ה – select-ים שלך ב – Sp כמו שכתבת.
    ואז תקרא ל – Sp מתוך ה – ASP ותשתמש בפקודה NextRecordset
    של ADO. למידע נוסף ודוגמאות קרא כאן:

    http://www.devguru.com/technologies/ado/8685.asp

  5. tal25 הגיב:

    אני רוצה את כל השורות
    הבעיה שאני מגדיר שלושה SELECT שבכל אחד אני מבקש 5 רשומות ושאני מציג את הנתונים הוא מביא לי רק את 5 הרשומות של השאילתא הראשונה ולא את הרשומות של השאילתות האחרות.

  6. yarono הגיב:

    תנסה להשתמש ב – UNION
    אם המבנה של שלוש הטבלאות שעליהן אתה מבצע Select זהה אתה יכול להשתמש בפקודת UNION ב – SQL שלך לדוגמה:


    SELECT * FROM Table1
    UNION
    SELECT * FROM Table2

    מקווה שזה יפתור לך את הבעיה

  7. yarono הגיב:

    תנסה את הקוד הזה על ה – Sp שלך
    תכניס את פקודות ה – Select אחת אחרי השנייה


    Do While Not objRecordset.State = adStateClosed
       For Each objField In objRecordset.Fields
          Response.Write objField.OriginalValue & VBCRLF
          Response.Write objField.UnderlyingValue & VBCRLF
          Response.Write objField.Value & VBCRLF
       Next

       Set objRecordset = objRecordset.NextRecordset
    Loop

שלח תשובה