|
הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
![]() |
![]() |
|
כלים לאשכול | תצורת הצגה |
![]() |
# 1 |
משתמש - היכל התהילה
|
שליפת SQL מתקדמת (קטגוריות ותתי קטגוריות)
אהלן חברה,
אני מנסה למצוא דרך יעילה לבצע שליפת SQL מסוימת... אני אסביר את המצב ע"מ לפשט את העניין. יש לי טבלה אחת, אשר מכילה קטגוריות ותתי קטגוריות. לדוגמא: ID NAME FID 1 CAT1 0 2 CAT2 0 3 SUBCAT1 1 4 SUBCAT2 1 5 SUBCAT3 2 6 SUBCAT4 2 כמו שאתם רואים, CAT1 ו CAT2 אלה הם קטגוריות ראשיות, ולהן קטגוריות משנה. אני מעוניין להציג בשליפה אחת את הקטגוריות לפי הסדר ההגיוני שלהן (כמובן, קטגוריות אב באות קודם, אבל ברגע שלקטגוריות אב יש תתי קטגוריות הן מופיעות למטה... לדוגמא: ID NAME FID 1 CAT1 0 3 SUBCAT1 1 4 SUBCAT2 1 2 CAT2 0 5 SUBCAT3 2 6 SUBCAT4 2 יש למישהו מושג? חיפשתי לזה תשובה, ולא מצאתי משהו ריאלי... אני שוקל לחזור ללולאה בתוך לולאה, אבל ממש מרגיז אותי להשתמש בזה. תודה מראש. |
![]() |
![]() |
# 2 |
אין כמו ב127.0.0.1
|
אם במילא אתה שולף כמות ידועה של נתונים, למה שלא תשלוף את הכל ותסדר בתוך מערך דו-מימדי?
|
![]() |
![]() |
# 3 |
משתמש - היכל התהילה
|
אני לא יודע מה הכמות נתונים שיש... זה משהו דינמי... אם זה היה ידוע, איזו סיבה יש לי להחזיק את זה במסד נתונים? :\
|
![]() |
![]() |
# 4 |
חבר על
|
שיטה זו של שליפת נתונים נקראת Recursive
בהצלחה - http://www.google.co.il/#hl=iw&sourc...1ad82c9add7e94 |
![]() |
![]() |
# 5 | |
מנהל פורום, עסק רשום
|
ציטוט:
אפשר לשלוח באמצעות פרוצדורת DB שתבצע את הרקורסיה או באמצעות PHP שישלוף. עדיף פרוצדורה כי ככה חוסכים קצת "תקשורת" בין PHP ל-DB. כמו כן, לדעתי אפיון הטבלאות לא נכון. האפיון אמור להיות בערך ככה: tblCategories: - CatId - ParentCatId - Name כאשר קטגוריות ראשיות מקבלות ערך ParentCatId=0 והילדים שלהם יקבלו את ה-CatId שלהם. בצורה כזאת תקבל אפשרות להוסיף כמויות בלתי מוגבלות של קשרי אבא-ילד וזה יתאים לך טוב לרקורסיה של השליפה. בצורה דומה בונים "פורום רקורסיבי" פשוט (פורום עם מבנה עץ - כמו תפוז לדוגמא) |
|
![]() |
![]() |
# 6 | ||
אין כמו ב127.0.0.1
|
ציטוט:
אם אתה יכול לעשות את זה, שליפה של כל הנתונים הרלוונטיים בשאילתא אחת ואז סידור שלהם במערך נראה לי הפתרון הכי אסתטי והגיוני. ציטוט:
|
||
![]() |
![]() |
# 7 |
משתמש - היכל התהילה
|
טוב אחרי לילה ארוך.. הבנתי שאין ממש שיטה יעילה ע"י שליפה לבצע דבר כזה.
Exa.co.il, ככה הטבלה שלי נראית, אני נתתי דוגמא... BlueNosE, כנראה שלא הבנתי את הכוונה שלך בהתחלה... ועברתי בסופו של דבר למערך דו-מימדי כמו שהצעת, לא מצאתי משהו יותר נוח/יעיל מזה... תודה חברה. |
![]() |
![]() |
# 8 | |
א.פורום תוכנה
עסק רשום |
ציטוט:
כאשר אפשר גם לשייך לאחר מכן פריטים למספר קטגוריות (ע"י IMPLODE) וכו'.. לדעתי זו השיטה הכי יעילה. |
|
![]() |
![]() |
# 9 |
משתמש - היכל התהילה
|
אני לא חושב שתוכל לעשות את זה בשאילתה אחת ללא SUB QUERIES,
אם הייתי רוצה להתייעל כמה שיותר הייתי שולף את כל הדברים שהם תתי קטגוריות ואת כל הקטגוריות בנפרד בשתי שאילתות. אז הייתי רץ על השאילתה תתי הקט' וכל פעם שמתחילה קט' חדשה הייתי מציג את הפרטים של ה'ט הראשית הרלוונטית. |
![]() |
![]() |
# 10 | |
מנהל פורום, עסק רשום
|
ציטוט:
![]() בכללי, השאלה היא את מי רוצים להעביד קשה ומה הוא צוואר הבקבוק: שרת ה-WEB שלך או ה-DB שלך. אפשר אכן לטעון את כל הקטגוריות לתוך מערך ולעשות את הרקורסיה בצד שרת או לקבל את זה מוכן מה-DB. נ.ב: אפשרות נוספת (בתנאי שזה מתאים מבחינת קידום ושיקולים נוספים) היא לבנות את התפריט הזה בקליינט. למה שהשרתים שלך יעבדו קשה אם אתה יכול לתת למחשב של המשתמש שלך להתאמץ קצת? להכניס את הכל למערך ב-JS ולבנות את התפריט לאחר העליה. נ.ב 2: גם אם עושים את זה, וישנו צפי גבוהה של גולשים לאתר (ו/או התפריט הזה חוזר על עצמו בכל העמודים) נכון יהיה לעשות קאשינג שלו. לבנות עמוד HTML שמכיל את התפריט ואתה טוען אותו פשוט או להכניס את המידע לסשין או אפליקיישן |
|
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|