שלח תשובה

זירת השאלות

578
צפיות
8
תשובות

שאילתא שתחזיר לפחות שורה אחד

,‏ 16 בדצמבר, 2005

אני רוצה שהשאילתא תחזיר לפחות שורה אחת גם אם היא לא מוצאת התאמה, ניסיתי להשתמש ב FULL OUTER JOIN למשהוא שתמיד יחזיר שורה אחת עם תנאי איחוד שתמיד יתקיים אבל הוא עדין מחזיר לי תשובה רק כשיש שורה מתאימה בטבלת permition

מישהו יודע למה?

אני עובד על SQL SERVER 2000
וזה הקוד של השאילתא:

SELECT pluNameU, pluDescU
FROM permition FULL OUTER JOIN (SELECT 4 a) AS T ON (T.a <> permition.pluNameU)
WHERE snif = 2



תגיות:

8 תשובות

  1. זהר פלד הגיב:

    אתה מבקש משהו לא הגיוני.
    למה ששאילתה תחזיר שורה אם אין התאמה בקריטריונים, ומה בדיוק אמור להיות בשורה הזו?

  2. בניה הגיב:

    תכניס שורה שתמיד תשלף
    בס"ד

    אולי זה יעזור

  3. gilad123 הגיב:

    שיהיו בה NULL 'ים
    זו טבלת הרשאות, אם לאדם מסויים אין הרשאה = 0, יש הרשאה = 1
    מה אם אין לו כלל שורה (בלי להכנס יותר מידי לפרטים זה דבר שבורה בה בניתי את המערכת זה יכול לקרוא), מבחינתי אין שורה זה אין הרשאה, אבל אם אין שורה הוא עף (או נכנס לניהול שגיאות).
    מה שרציתי זה שיחזיר לי שורה שכל העמודות מהטבלה הזו יהיו NULL (זה מה ש FULL OUTER JOIN אמור לעשות כשיש לו התאמה באחת הטבלאות) ואני אשים עליהם

    ISNULL(X,0)

    ואז אני מקבל אפסים – אין הרשאה, בלי להתחיל להסתבך עם רקורד סט ריק או עם NULL ים ובלי שאני אצטרך להחזיק שורה נוספת לכל מקרה כזה.
    שורת דמה יכולה להיות פיתרון (עקיפה, אבל זה יעשה את העבודה)

  4. בניה הגיב:

    אז תעשה שורת דמה
    בס"ד

    לפחות לבינתיים

  5. somebody הגיב:

    למה פשוט לא לעשות שאם אין נתונים אז
    זה ישים שורה שאתה תעשה?
    כאילו השורה שאתה מדפיס על המסך, רק שהיא תיהיה רק פעם אחת ויהיה כתוב ב NULL.
    הכי פשוט.

  6. זהר פלד הגיב:

    אין שום הגיון בזה.
    וגם אין שום סיבה להסתבך אם ה recordset ריק.
    תנאי קטן ופשוט על rs.eof יתן לך תשובה הרבה יותר פשוטה מאשר כל הבלגאן שאתה מנסה לעשות.

  7. gilad123 הגיב:

    זה הגיון
    זהר, לא רציתי את הפתרון הזה כי בהרבה מקומות שונים בדף אני בודק ערך של עמודה מסויימת (הרשאה לפעולה מסויימת)
    אם יכול להיות שאין ערך אני צריך לשים תנאי מכונן האם rs.eof ואם לא אז מה הערך (כידוע, להבדיל משפות C, בשפת VBScript הוא בודק את כל החלקים של התנאי גם אם אין כבר אפשרות שהתנאי יתקיים), וכל זה בתוך טאג של html שאני מייצר לשליחה ללקוח, כשבדף יש הרבה תגים כאלה.
    אין ספק שמה שאתה אומר יעבוד ואני לא בטוח מה יותר יעיל, אבל זה יסבך לי את הקוד ומזה רציתי להמנע.
    תודה בכל מקרה.
    גלעד.

  8. זהר פלד הגיב:

    עוד סיבה להעדיף js…
    מצד שני, אם אתה עובד ב sql server, אתה יכול ליצור פשוט stored procedure, שתמיד תחזיר לך ערך, בהתאמה לערכים שהתקבלו (או לא התקבלו) מה select.

שלח תשובה