איך עושים JOIN?
-
@nigun הסתקרנתי פתאום יותר אז עליתי לראות את מבנה הנתונים.
הוא לא היה קריא (ולכן עזבתי בפעמים הקודמות שביקרתי את הנושא, בלי לבדוק...)
ערכתי את הודעתך ועיצבתי את הקוד.
ובכן, השאלה שמייד עולה זה למה לעשות JOIN בין שני עמודות שאינם שדה מפתח. למה השדה user בpoints לא מצביע על הid של שבטבלה userinfo? (ואיך זה שאורכי השדות של הvarchar בשני שדות הuser לא זהים, זה לא כ"כ הגיוני).אגב גירסת הmysql: בכל אובנטו מתקינים בד"כ mysql כמו ילדים טובים מהמנהל חבילות ונתקעים עם הגירסה המיושנת 5 (אוחזים כעת ב12!!). לתשומת לבכם בהתקנת השרת הבאה שלכם. לגירסה 12 יש המון פיצ'רים שאין ב5.
-
-
@nigun ממש בראשי פרקים כדי לא לחרוג מהנושא של האשכול:
זה השדה שאמור לזהות את הרשומה. הוא תמיד ייחודי (ללא כפילויות בין הרשומות בטבלה) ובדרך מוסכמה הוא נקרא ID ולרוב הוא מסוג LongInt (יש גם מקרים יותר נדירים של שימוש ב GUID)הוא השדה שאמור להיות המקשר הקלאסי בין טבלאות בשאילתות, כלומר שלרוב עליו מבצעים את ה-Join.
הוא גורם מכריע בנירמול של בסיסי נתונים, שזה במילים פשוטות, התהליך שבו אני בונה את הDB בצורה שממזערת ככל שניתן את הכפילויות בנתונים. נושא שראוי לאשכול נפרד.
-
@nigun לא אוהב את זה, אני חושב שזה לא הוגן.
אתה יכול לבחור דרך של ללמוד תוך כדי עשייה,
אבל לבוא לאנשים בשאלה י' בלי שהם יידעו שאתה לא יודע את הט' הקודמים, זה כבר משגע.
מלבד זאת, הבנה בסיסית של מסדי נתונים היא כה קלה (אפשר לתמצת אותה בכמה שורות של טקסט) שנראה לי יש לך אובססיה לדרך הזו של ללמוד תוך כדי. -
@dovid
באופן כללי אתה צודק.
אבל במקרה הזה לא נראה שזה קשור
כי השדה USER הוא לא יחודי (אם הבנתי נכון את ההגדרה של מפתח)
וגם אם אני משנה אורך השדות שיהיו שווים, זה לא פותר את הבעיה (השאילתא עדיין רצה).
או שלא הבנתי את ההודעה הקודמת שלך (סביר מאד) -
@nigun לא הסתבכת, כי פה מדובר בויכוח מאוד פשוט.
אתה רוצה ללמוד תוך כדי עשייה ועם דילוגים, ואני אומר לך שתי דברים: א. תיידע בכל מקרה, ב. שכח מהעזרה שלי.
אם אתה רוצה עזרה שלי עוף מפה ללמוד על הא' ב' של מסד נתונים טבלאי (לא נרמול ולא נעליים, רק טבלאות עמודות שדות טיפוסים ומפתחות ראשיים). תחזור כשאתה יודע טוב. -
@dovid אמר באיך עושים JOIN?:
אבל לבוא לאנשים בשאלה י' בלי שהם יידעו שאתה לא יודע את הט' הקודמים, זה כבר משגע.
בואו ונחזיק טובה ל@dovid על הזמן היקר שהוא משקיע בפורום, ובכתיבת ההסברים המפורטים ובסינון של התוכן. אני לגמרי מבין את הטענה, זה דורש סבלנות רבה ולפעמים יש שאלות שמכוונות גבוה, ועם הנכונות לעזור אין לך זמן \ כוח \ חשק.
זה גם מאוד מקשה על מישהו שנכנס עכשיו לפוסט ומנסה ללמוד על הסדר.
האף שלי מספיק משופשף ואין לי עניין לתחוב אותו ביניכם, אני מבין שאתם מכירים מזמן, ומסתמא הגערה היתה כרב לתלמיד... אני פשוט משער שיש מהמון העם הפשוט, ואני בתוכם, שמחפשים מקום לשאול שאלות גם אם הם לא בדיוק יודעים היכן הם נמצאים בחומר, ועלולים לחשוש לשאול שאלות אם יתקלו בתוכחה כזו...
שמא עבורם היה מספיק להפנות ישר אל הלינקים המצ"ב?
סליחה אם חרגתי... -
@OdedDvir
אל תדאג
אתה יכול לעקוב אחרי כל ההודעות של dovid
הוא לא נותן כ"כ הרבה תוכחות
וכשהוא נותן לי אני די זורם עם זה.לגבי הלינקים (בכללי) זה לפעמים עוזר יותר לפעמים פחות, תלוי במקרה.
אבל מה שבטוח אם אין לך מספיק זמן עדיף לזרוק כמה לינקים יעילים (לא מאמר כללי)
בשביל לתת כיוון חשיבה (וגם בשביל שהשואל לא ירגיש מיותם)
כי ממה שאני רואה הרבה פעמים בשביל מי שיודע זה חיפוש קטן בגוגל
והשואל לא יודע מאיפה להתחיל.אבל כמובן הסברים מפורטים בעברית עוזרים ומלמדים הרבה
במיחוד בשביל לתפוס את הכיוון.
ואם יש לך מאמר שמסביר כהוגן את הקונספט? לא יזיק להוסיף אותו לקינוח. -
@OdedDvir תום לב מזוהה מרחוק. ובמקרה כזה מבררים אם השואל איפה הוא הבין ואיפה לא ומגששים להבין מה מבנה הDB כמו שעשית וכו'.
@nigun ידע היטב כמה הוא לא יודע, אלא "הניח" שהנושאים לא נדרשים/קשורים לשאלה.
אני חושב שהשואל חייב להיות מנוטרל מ"הנחות". ואני אכן חריף, וכולם נותנים לי מוסר על כך, ואני מקבל באהבה, ובפרט ממך @OdedDvir. אבל אני יקבל ממכם את המוסר יותר כשתגיעו למקומי, כשתבינו כמה תסכול יש בעובדה שכל השאלה מונחת על "ההנחה" שהשמיטה מידע קריטי מגוף השאלה או יותר נכון מגוף השואל. -
אני יחדד. יש פה שאלה על JOIN בין טבלאות.
טבלה זה ישות במסד נתונים שניתנת להסבר בדקות ספורות, ואחד המרכיבים בה זה מזהה דהיינו מפתח ראשי.
השאלה נסובה על JOIN שזה שאילתה מתקדמת שמתבססת על קשר בין טבלאות לפי מזהה, בדרך כלל לפחות באחת מהם, המזהה "זר" לטבלה בה הוא נמצא. שאלה על ביצועים (!!) של JOIN בשלב בה לא יודעים מה זה מזהה של טבלה, תוך הנחה שזה לא כזה קשור להבין איך עובד טבלה לשאלה איך לחבר שניים בשאילתה ש"כבר עובדת", היא דרך חיים שקשה עלי, בפרט כשאני רוצה לעזור. -
בנוגע לרחמים על חדשים, היה את זה גם פה ברמז בהודעתו של @OdedDvir וגם באשכול של @יהודי-טוב (https://tchumim.com/topic/9086), התחושה שלכם היא שאני עלול להיות לא מספיק נעים/מזמין למי ששואל שאלות של מתחיל בתום לב.
אני מזמין אתכם לאתר ולנתח מקרה כזה, של שאלה הוגנת בתום לב, שאני גרמתי לשואל ללכת.
יש לרשותכם ארכיון של כמה שנים עם אלפי שאלות פה בפורום ובארכיון. -
@dovid אמר:
התחושה שלכם היא שאני עלול להיות לא מספיק נעים/מזמין למי ששואל שאלות של מתחיל בתום לב.
ציינתי ש @nigun כבר בן בית פה, ואף הוא קיבל את הדברים ברוח טובה.
כבר נאמר: זרוק מרה בתלמידים, ויש לתוכחה מקום ותועלת למי שבא ללמוד, לחשב מסלול מחדש, במקום לבזבז זמן לעצמו ולכולם. ובכלל, אפילו תוכחה כנ"ל בוודאי כבר לא תגרום לי לעזוב כאן מרצוני, אשאר בכל מקרה.
פשוט מרוב שטוב לי כאן דאגתי שאולי יימנע טוב מאחרים.יש לרשותכם כמה שנים עם אלפי שאלות פה בפורום ובארכיון.
אני כבר מקדים אותך בזה, כמובן לא מהסיבה הנ"ל, פשוט מדביק פערים...
-
@OdedDvir תודה!
אני חייב לציין ש@nigun מקבל ממני הכי הרבה שאני זוכר, גם בגלל השילוב המיוחד בין הכישרון שלו לבין הרגלי הלמידה והעבודה שלו, וגם כי כל האחרים ברחו הרבה קודם...
הוא יודע לקבל תוכחות, ואני מעריך את זה מאוד ומצטער אם יוצא לי לפעמים לא מכבד מספיק. -
@nigun מכיון שהאשכול כבר עבר לפסים אחרים אני ארשה לעצמי לכתוב,
תשקול באמת ברצינות למצוא פתרון לנושא של שיעורי בית. כנראה שיש לך אלרגיה או בעיה אחרת כלפי קריאת תיעוד ו/או כתבות טכניות. ואתה מעדיף לקפוץ למים ולשאול מתי שאתה מסתבך.
אבל זה באמת מתסכל לפעמים לענות על משהו מבלי שאתה מרגיש שהשואל השקיע עד מקום שידו מגעת לפני שהוא שאל, ומבלי שהוא משקיע מאמץ להבין את התשובות. (לפעמים תשובה יכול להיות ציון למושג שאתה לא מכיר, אז לפני שאתה ממשיך הלאה מצפים ממך שתברר את המושג).ובהערת אגב, אני חושב לעצמי לפעמים שיש כאן באמת קצת פרדוקס, שבד"כ אותם כישורים שעוזרים לך לשאול בצורה חכמה וממוקדת כבר יביאו אותך לתשובה בלי שתזדקק לפורום... ולא בחינם אמרו שאלת חכם חצי תשובה. והרי אף אחד לא רוצה פורום שומם, ואם כן חייבים כאלה שלא מגיעים לתשובות בכוחות עצמם. אבל זה כבר מצביע על זה שלא שאלו שאלה טובה כי אחרת למה הם לא הגיעו לתשובה בכוחות עצמם?
אבל זו לא טענה אמיתית כי עדיין יש שאלות לגיטימיות שנשאלו בצורה טובה על אף שהם לא הובילו את השואל לתשובה בכוחות עצמו. -
@yossiz אמר באיך עושים JOIN?:
כנראה שיש לך אלרגיה או בעיה אחרת כלפי קריאת תיעוד ו/או כתבות טכניות. ואתה מעדיף לקפוץ למים ולשאול מתי שאתה מסתבך.
לא כל כך מדוייק
אני קורא תיעוד, וניסתי לקרוא מדריכים על JOIN לפני שהעלתי את השאלה
ומשום מה השאילתא נתקעה (וכאן בפורום התברר שזה בגלל הנתונים).כנ"ל לגבי הדיון שלנו אתמול על הפלט של התכונות בלינוקס
שרפתי הרבה שעות להבין מה קורה בDISPLAY, ולא הצלחתי להבין
פשוט כי לא הייתי בכיוון הנכון.
כנ"ל אם תסתכל בפורום אסטריסק תראה שאני עברתי שם על התיעוד של FREESWITCH
בלי שהיה לי את מי לשאול בכלל, ודווקא די נהנתי בסוף (בעיקר כשהבנתי).
כנ"ל לגבי התיעוד הנוראי של קמיליו, שאני לבנתיים צריך לגלות דברים לבד.מה שכן אני לא מצליח לקרוא מדריכים שאני לא מבין איך הם שייכים אלי כרגע
או יותר נכון זה לא מסקרן אותי כרגע.
(למשל אני מנסה כבר כמה שבועות להבין איך webrtc עובד מאחורי הקלעים עם כל הפרוטוקלים המעניינים שלו, אף על פי שאין לי משהו ספיציפי לעשות עם הידע הזה, אבל זה מעניין)לעומת זאת כשקראתי בתחילת דרכי את המדריכים הבסיסיים
ראיתי שהדרך היחידה שאני יכול לקפוץ למים זה להגיע למצב שיעבוד
ורק אחר כך להבין איך? ולמה? (כנ"ל בטכנולוגיות שמניתי לעיל)
ואז פשוט התעצלתי לעבור על המדריכים הבסיסיים שוב (עם הדוגמאות של רשימות מכולת וכדו').וחוץ מזה יש לי בעיה שאני קולט יותר בשמיעה מאשר בקריאה/צפיה
ולכן הדרך שלי להרחיב אופקים הוא בעיקר ע"י פודקאסטים או מדריכים מיוטיוב ממורים לשמע
אבל כשאין ברירה מתחילים לקרוא (או להפעיל TTS) אבל זה לא אומר שאני לא קורא בכלל.אגב באחד מהדיונים כאן בעבר קיבלתי על הראש
על זה שאני שואל רק שאלות גבוהות, ולא שואל שאלות פשוטות של "איך עושים X?"
למעשה אני לא זוכר ששאלתי כאן פעם שאלה בלי שניסתי לחפש על זה לפני.
ולרוב הבעיה היא שאני לא יודע מה הבעיה.