578
צפיות
צפיות
8
תשובות
תשובות
שאילתא שתחזיר לפחות שורה אחד
אני רוצה שהשאילתא תחזיר לפחות שורה אחת גם אם היא לא מוצאת התאמה, ניסיתי להשתמש ב 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 תשובות
אתה מבקש משהו לא הגיוני.
למה ששאילתה תחזיר שורה אם אין התאמה בקריטריונים, ומה בדיוק אמור להיות בשורה הזו?
תכניס שורה שתמיד תשלף
בס"ד
אולי זה יעזור
שיהיו בה NULL 'ים
זו טבלת הרשאות, אם לאדם מסויים אין הרשאה = 0, יש הרשאה = 1
מה אם אין לו כלל שורה (בלי להכנס יותר מידי לפרטים זה דבר שבורה בה בניתי את המערכת זה יכול לקרוא), מבחינתי אין שורה זה אין הרשאה, אבל אם אין שורה הוא עף (או נכנס לניהול שגיאות).
מה שרציתי זה שיחזיר לי שורה שכל העמודות מהטבלה הזו יהיו NULL (זה מה ש FULL OUTER JOIN אמור לעשות כשיש לו התאמה באחת הטבלאות) ואני אשים עליהם
ISNULL(X,0)
ואז אני מקבל אפסים – אין הרשאה, בלי להתחיל להסתבך עם רקורד סט ריק או עם NULL ים ובלי שאני אצטרך להחזיק שורה נוספת לכל מקרה כזה.
שורת דמה יכולה להיות פיתרון (עקיפה, אבל זה יעשה את העבודה)
אז תעשה שורת דמה
בס"ד
לפחות לבינתיים
למה פשוט לא לעשות שאם אין נתונים אז
זה ישים שורה שאתה תעשה?
כאילו השורה שאתה מדפיס על המסך, רק שהיא תיהיה רק פעם אחת ויהיה כתוב ב NULL.
הכי פשוט.
אין שום הגיון בזה.
וגם אין שום סיבה להסתבך אם ה recordset ריק.
תנאי קטן ופשוט על rs.eof יתן לך תשובה הרבה יותר פשוטה מאשר כל הבלגאן שאתה מנסה לעשות.
זה הגיון
זהר, לא רציתי את הפתרון הזה כי בהרבה מקומות שונים בדף אני בודק ערך של עמודה מסויימת (הרשאה לפעולה מסויימת)
אם יכול להיות שאין ערך אני צריך לשים תנאי מכונן האם rs.eof ואם לא אז מה הערך (כידוע, להבדיל משפות C, בשפת VBScript הוא בודק את כל החלקים של התנאי גם אם אין כבר אפשרות שהתנאי יתקיים), וכל זה בתוך טאג של html שאני מייצר לשליחה ללקוח, כשבדף יש הרבה תגים כאלה.
אין ספק שמה שאתה אומר יעבוד ואני לא בטוח מה יותר יעיל, אבל זה יסבך לי את הקוד ומזה רציתי להמנע.
תודה בכל מקרה.
גלעד.
עוד סיבה להעדיף js…
מצד שני, אם אתה עובד ב sql server, אתה יכול ליצור פשוט stored procedure, שתמיד תחזיר לך ערך, בהתאמה לערכים שהתקבלו (או לא התקבלו) מה select.