en-UShe-IL
You are here:   Blog
Register   |  Login

Blog Archive:

Maximize
* Can be used in order to search for older blogs Entries

Search in blogs


Blog Categories:

Maximize
* Can be used in order to search for blogs Entries by Categories

Blog Tags:

Maximize
* Can be used in order to search for blogs by keywords

TNWikiSummit


Awared MVP 


 


Microsoft® Community Contributor 


Microsoft® Community Contributor


 Read first, before you you use the blog! Maximize

Recent Entries

By ronen ariely on 25/11/2013 18:56
SQL Random String using CLR
By ronen ariely on 08/09/2013 10:16
RAND / NewID and some more build in function have a side-effecting, and cannot be used directly in a UDF. One of the workaround is to create a View and your own UDF as random function
By ronen ariely on 11/11/2011 18:34

כיצד נוכל לאפשר דפדוף (חלוקת הרשומות לדפים ומעבר בין הדפים) כאשר אנו רוצים לקבל את הרשומות בסדר אקראי?

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

אחרי הכול לא נרצה שהמשמש יעבור לעמוד 2 ויקבל שוב נתונים מעמוד 1 או שכאשר המשתמש יחזור לעמוד 2 אחרי שביקר בעמוד 3 הוא פתאום יקבל תוצאה שונה של רשומות.

ננסה לתת מענה לאפיון המדובר במדריך הקצר הבא

By ronen ariely on 16/08/2011 20:44

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

במשך ההסבר הכללי אציג קוד התואם לשרתי MS-SQL. עם זה מדריך זה מופנה כאמור לכל שרתי ומסדי הנתונים השונים המרכזיים שיש בשוק. אשים דגש על המורכבות בגישה ישירה לבעיה שקיימת בשרתים השונים ובהמשך אציג פתרונות עבור שרתים ומסדי נתונים שונים.

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

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

By ronen ariely on 25/12/2010 13:25

במשך ההסבר בכללי אציג קוד התואם לשרתי MS-SQL. עם זה מדריך זה מופנה לכל שרתי ומסדי הנתונים השונים ומציג רעיון מחשבתי יותר מקוד ספציפי. בהמשך אציג פתרונות עבור שרתים ומסדי נתונים שונים.

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