הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה עם שאילתה לאיחוד 3 טבלאות (https://hosts.co.il/forums/showthread.php?t=102583)

Ori The Man 16-02-13 17:26

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

-מנהל
-ראש צוות
-יחצן


אני רוצה לשלוף את הרשימה של כל האנשי צוות זאת אומרת שיופיע ככה

מנהל
מנהל
מנהל

ראש צוות
מי שתחת הצוות שלו (יחצנים)

ראש צוות
מי שתחת הצוות שלו (יחצנים)

יש לי 3 טבלאות
User_Data
שם כל הנתונים של המשתמש (שם,שם משפחה וכו')
תמונה- http://www.oritheman.net/tmp/userdata.jpg (השדה ID הוא המזהה של המשתמש)

User_Team_Leaders
שם יש את ה ID של מי שהוא ראש קבוצה
תמונה - http://www.oritheman.net/tmp/temaleaders.jpg

User_Teams
שם יש את ה ID של ראש הקבוצה ואת ה ID של היחצן

תמונה - http://www.oritheman.net/tmp/userteams.jpg

עשיתי שאילתה שלא כ"כ יצאה טוב (עדיין מנסה ללמוד את כל ה JOIN הזה)
PHP קוד:

SELECT
FROM User_Data
JOIN User_Team_Leaders ON 
User_Team_Leaders.User_ID User_Data.ID 
JOIN User_Teams ON User_Team_Leaders.User_ID User_Teams.Team_Leader 

אשמח לעזרה :) תודה

אדיר 16-02-13 17:55

לכל יחצן יש בהכרח ר"צ אחד?

אם כן הבעיה היא בתכנון מסד-הנתונים קודם כל, אני לא ממש מבין למה צריך 3 טבלאות -
אפשר לעשות את זה עם טבלה אחת (employees לדוג') באמצעות מימוש one-to-many relationship,
השדה המקשר (leader_id לדוג') יצביע לשדה אחר (id לדוג') באותה טבלה.
לא לשכוח שדה נוסף שיגדיר את תפקידו של כל עובד (מנהל, ר"צ, יחצן וכו').

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

Ori The Man 16-02-13 19:06

כן,לכל יחצן ראש צוות 1

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

אם הוא ראש צוות הוא מוכנס לטבלה User_Team_Learders
אם הוא תחת ראש צוות הוא מוכנס ל User_Teams..

אין לי קבוצות מוכנות מראש

בעיקרון אני צריך לקחת ID של Team_Leader
לשלוף את כל הרשומות ב User_Teams ששייכות לאותו ID
ובהתאם לשלוף את הפרטים שלהם

דרך אגב את כל מבנה המסד בנינו ב access והעברנו ל PHPMYADMIN
שם הכל ניראה קל ופשוט :(

אדיר 16-02-13 19:09

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

Ori The Man 16-02-13 22:16

אתה מכיר איזה אתר טוב שמסביר על ביצוע קשר כזה?

אדיר 16-02-13 23:32

זה לא צריך להיות מסובך מדי, לדוגמה:
קוד:

Table:
Employees

Columns:
id (INT A_I PK) | name (VARCHAR) | role (ENUM admin\leader\user) | leader_id (INT) |  ..

Rows:
1 | admin | admin | 0 | ..
2 | leader1 | leader | 0 | ..
3 | leader2 | leader | 0 | ..
4 | user1 | user | 2 | ..
5 | user2 | user | 2 | ..
6 | user3 | user | 3 | ..
7 | user4 | user | 3 | ..



כל הזמנים הם GMT +2. הזמן כעת הוא 00:17.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ