ABA


"צריך עזרה באפיון שאילתא להצגת נתונים מותאמים אישית"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #13937 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13937
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   11:13   21.05.08   
אל הפורום  
  צריך עזרה באפיון שאילתא להצגת נתונים מותאמים אישית  
 
   חשבתי על משהו...
צריך עזרה.

מי שמכיר בפייסבוק יש תכונה PEOPLE YOU MAY KNOW
האתר בעצם עובר על כל החברים שלך, ומחפש ביניהם חברים משותפים
(הכוונה - עובר בין כל החברים של החברים שלך, ומחפש בין כולם חברים משותפים).

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

זה נשמע פשוט אבל בפועל.. איך זה הולך?

רוצים גם אתם חתימת פז"ם ? https://.net/


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אממ זה יותר עבודה שחורה מאשר תיכנות מסויים akoka 22.05.08 08:43 1
     התוצאה שתתקבל לא נכונה Kent Net 22.05.08 10:22 2
  אממ.. פה זה כבר יותר פרוצדורה של המסד נתונים.. lior066 24.05.08 01:40 3
     אני אשמח להסבר איך עושים דבר כזה. Kent Net 24.05.08 22:05 4
         אמממ.. אוקי.. lior066 26.05.08 09:12 5
             זה לא כזה מסובך :S akoka 26.05.08 19:08 6
                 איך מתבצעת הכתיבה של הפרוצדורות? Kent Net 27.05.08 00:17 7
                     הפרוצדורה שמורה על השרת של ה MYSQL עצמה.. lior066 27.05.08 02:02 8
                         פרוצדורות זה לא ממש כמו שאילתות מוכנות , akoka 07.07.08 18:51 11
  אני עדיין מחפש פיתרון, כי לא מצאתי. Kent Net 05.07.08 15:59 9
  up Kent Net 07.07.08 17:48 10

       
akoka

דרג אמינות חבר זה
   08:43   22.05.08   
אל הפורום  
  1. אממ זה יותר עבודה שחורה מאשר תיכנות מסויים  
בתגובה להודעה מספר 0
 
   בוא ניקח 2 משתמשים לדוגמא

קיימת טבלת friends שבנויה בצורה הבאה

________________
user_id
friend_id
________________

בוא נשלוף קודם כול את כול החברים של משתמש א


SELECT * FROM friends WHERE `user_id`='1'

בוא נעבור לPHP כדי להפוך את כול הid של החברים למחרוזת שמופרדת בפסיק ואז להשתמש בIN כדי לקבל את האנשים שהם החברים של החבר שלי אבל לא שלי.


while($row = mysql_fetch_array($query))
{
$string . = ",'{$row[friend_id}'";
}

$cut_first_letter = substr($string,0,strlen($string) - 1);

$select_people_that_not_my_friends = "SELECT * FROM friends WHERE user_id = '$some_friend_user_id' AND friend_id IN ('$cut_first_letter')";


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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   10:22   22.05.08   
אל הפורום  
  2. התוצאה שתתקבל לא נכונה  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 22.05.08 בשעה 10:23 בברכה, Kent Net
 
אתה מציג לי חברים שלי, שהם לא חברים של משתמש X.

אני אסביר את עצמי שוב
אני רוצה לעבור בין כל החברים שלי.
נקרא לרשימה הזאת X.

אני רוצה למצוא חברים משותפים (Y) מאותה רשימה (X).
(חברים משותפים - הכוונה , 2 חברים שלי, או יותר, שהם כולם חברים של משתמש אחר)

אותם החברים מרשימה Y שהם לא חברים שלי , הם אלה שאני מחפש.

אני אפשט את זה

אני : אברהם.

( החברים שלי ) X:
משה,
דנה,
יעל,
אביגיל.


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

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

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

דרג אמינות חבר זה
   01:40   24.05.08   
אל הפורום  
  3. אממ.. פה זה כבר יותר פרוצדורה של המסד נתונים..  
בתגובה להודעה מספר 0
 
   הרבה יותר מסובך משליפה רגילה של המסד נתונים , סביר להניח ( אני מאמין שכן ) שהם עובדים עם פרוצדורה שמחזירה את כל הרשומות ולא יבנו להם שאילתת ענק..

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

ובעיקרון הטיפול פה הוא כמו רשומה רגילה שמגיעה משאילתה רגילה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   22:05   24.05.08   
אל הפורום  
  4. אני אשמח להסבר איך עושים דבר כזה.  
בתגובה להודעה מספר 3
 
  

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

דרג אמינות חבר זה
   09:12   26.05.08   
אל הפורום  
  5. אמממ.. אוקי..  
בתגובה להודעה מספר 4
 
   אתה צריך ללמוד פרוצדורות זה קצת יותר מסובך משאילתות רגילות , הקטע פה שאתה משלב נתונים עם היצירה שלך ואתה יכול לעבוד על כמה וכמה טבלאות בהרצת פקודה אחת והיא כמו סקריפט שרץ על השרת , כל תוכנה של מסד נתונים יש לה את הסינטקס שלה , יש לך ORACLE שהם החברה הכי טובה לבסיסי נתונים והיא תומכת מלאה בפרוצדורות , אך נחשבת ליוקרתית מאוד והיא מומלצת בעיקר לארגונים ולריבוי שרתים , יש לך את MSSQL שהיא של מיקרוסופט שהיא גם תומכת מלאה בפרוצדורות , יש את האקספרסס אני לא יודע אם הוא תומך נראה לי שכן אבל והוא חינמי , בכל מקרה בשרתים יש לך עלות חודשית נוספת לתשלום...וכמובן לא לשכוח את MYSQL שמגרסא 5.0 אם אני לא טועה החלה לתמוך מלא בפרוצדורות , אני לא בטוח שכל השרתים מתואמים כיום עם גרסא 5 אבל זאת אחלה תוכנה לבסיסי נתונים אני אישית משתמש איתה , לא יצא לי כל כך לעבוד עם פרוצדורות כי אני לא עובד הרבה על אתרים של קהילות וברוב המקרים משתמשים בפרוצדורות לקהילות או סטטיסטיקות כדי לעשות ניתוחים והשוואות יותר מעמיקות ...

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   19:08   26.05.08   
אל הפורום  
  6. זה לא כזה מסובך :S  
בתגובה להודעה מספר 5
 
   ברגע שמבינים את הרעיון של משתנה IN/OUT/INOUT זה ממש שטויות מתייחסים לזה כמו פונקציה ,וקוראים לה עם CALL ופרמטרים שלה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   00:17   27.05.08   
אל הפורום  
  7. איך מתבצעת הכתיבה של הפרוצדורות?  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 27.05.08 בשעה 00:19 בברכה, Kent Net
 
על השרת עצמו ?
דרך קוד חיצוני שמקשר ל MYSQL ?

אם אפשר מדריכים בנוגע לפרוצדורות MYSQL
חיפשתי קצת בגוגל, אבל לא נתקלתי במשהו יותר מדי יעיל (גם לא התעמקתי יותר מדי)

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

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

דרג אמינות חבר זה
   02:02   27.05.08   
אל הפורום  
  8. הפרוצדורה שמורה על השרת של ה MYSQL עצמה..  
בתגובה להודעה מספר 7
 
   זה כמו באקסס שיש לך שאילתות מוכנות רק בוא נגיד הרבה יותר מורכב וחזק..

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

http://www.fileflyer.com/view/ytL3aBR

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   18:51   07.07.08   
אל הפורום  
  11. פרוצדורות זה לא ממש כמו שאילתות מוכנות ,  
בתגובה להודעה מספר 8
 
   פרוצדורה זה ממש כמו פונקציה ,שמכילה בתוכה משתנים ,ויכולה לקבל פרמטרים בקריאה שלה ,זה יעיל בעיקר שעושים מספר שאילתות שדורשות הרבה חישובים ודורשות קבלה של פרמטרים שונים כול פעם.

אני אישית לא משתמש בזה כמעט.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   15:59   05.07.08   
אל הפורום  
  9. אני עדיין מחפש פיתרון, כי לא מצאתי.  
בתגובה להודעה מספר 0
 
  

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Kent Net
חבר מתאריך 18.3.02
2359 הודעות, דרג אמינות חבר זה
   17:48   07.07.08   
אל הפורום  
  10. up  
בתגובה להודעה מספר 0
 
  

רוצים גם אתם חתימת פז"ם ? https://.net/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net