לא ברור: שאילתת "select top 3" מחזירה 4 ערכים

לא ברור: שאילתת "select top 3" מחזירה 4 ערכים

שלום חברים, אני עושה שאילתא בASP (MDB) וברצוני לבחור את שלושת הרשומות המובילות. קיימות שם 2 רשומות בעלות ערך זהה ומשום מה אני מקבל 4. כשאני עושה את אותה שאילתא על ערכים ללא כפילות - התוצאה יוצאת 3 רשומות בלבד. מכיוון שאני יודע מראש שיהיו לי רק 3, אני יכול כמובן לעצור בשלישי, אבל אשמח אם מישהו יסביר לי את ההגיון מאחורי ההתנהגות הזאת. תודה מראש.
 

Xעמרי

New member
כי ככה זה אמור לעבוד באמת

select top סופרת נתונים כפולים כנתון אחד, אך כאמור מעבירה גם את הכפולים ולכן אתה מקבל יותר ממה שאתה מצפה לקבל.
 

pitoach

New member
אתה בטוח ?!? באיזה מסד נתונים אתה עובד?

תבנה טבלה חדשה עם שדה אחד מספרי בלבד תכניס לטבלה 10 רשומות כשלשדה אתה נותן ערך 4 לכולן תריץ שאילתה select top 1 * from Tbl ותגיד לי אם קיבלת נתון אחד או 10 נתונים ?
 

Xעמרי

New member
גוגל אשם

אני לא מצליח למצוא כרגע את הפוסט שמצאתי אז ועל פיו הסקתי את המסקנה הזו אבל זה מה שקורה כשמסתמכים על תוצאות של גוגל במקום לנסות לבד בתכל'ס - אתה צודק, ניסיתי (באקסס) ואכן חוזרת רק רשומה אחת עבור השאילתא מצד שני, הבעיה אכן קיימת (אצל מר בחור ואצל אותו אחד שדיווח עליו בפוסט שמצאתי בגוגל) וכנראה שהיא מתקיימת בתנאים מסוימים (אולי דרייבר בעייתי, אולי מסד נתונים אחר) אני מניח שבאמצעות הקוד שהוא יצרף, אם יצרף, יהיה לנו לעזר.
 

pitoach

New member
אתה יכול לצרף לנו יותר נתונים של הבעיה?

או שתצרף לנו את הקובץ של מסד הנתונים או ש: צרף לנו את השאילתה שמייצרת את הטבלה שלך צרף לנו שאילתה שמכניסה בו 2 נתונים זהים צרף לנו את השאילתה שאיתה אתה מנסה להוציא נתונים עם ה top ככה נוכל לראות בדיוק את הבעיה אם היא קיימת וכיצד לתקן אותה אני מצרף לך קובץ פשוט של אקסס עם טבלה ושאילתה תבדוק ותגלה שהשאילתה מחזירה תמיד רשומה אחת למרות שבטבלה יש הרבה נתונים עם אותו ערך * הערה: האבטחה של תפוז שווה לת_ת אפשר להעלות כל וירוס וכל סוג קובץ אם רוצים ורק צריך להחליף את הסיומת שלו 1. לעולם לעולם לעולם לא לפתח ככה!!! תמיד לעשות בדיקה ברמה בינארית של הקובת שמועלה שהסיומת שלו מתאימה לסוג הקובץ 2. החלפתי את סיומת הקובץ כדי שאוכל להעלות לפורום ל txt תחזיר את הסיומת לסוג accdb כדי לפתוח אותו
 
למעלה