תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

mySQL: טבלאות ציר (pivot) וצירוף (JOIN) של יותר מ-2 טבלאות

מחבר:
בתאריך:

 

מדריך זה מבוסס על מדריך קודם שמסביר כיצד לצרף שתי טבלאות באמצעות JOIN.

 

mysql join

 

מתי נשתמש בטבלת ציר (pivot)?

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

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

 

שלבי העבודה

1. ניצור 3 טבלאות

טבלת workers שמכילה מידע אודות העובדים

--
-- Table `workers`
--

CREATE TABLE `workers` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `workers` (`id`, `name`) 
VALUES
(1, 'Moshe'),
(2, 'Yechezkel'),
(3, 'Yirmiyahu'),
(4, 'Gershon'),
(5, 'Asher');

טבלת cars עם מידע אודות מכוניות

--
-- Table `cars`
--

CREATE TABLE `cars` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `cars` (`id`, `name`) 
VALUES
(1, 'Talbot'),
(2, 'Sussita'),
(3, 'Subaru');

וטבלת car_worker שמצליבה את המידע אודות העובדים עם המידע אודות המכוניות שבבעלותם

--
-- Table `car_worker`
--

CREATE TABLE `car_worker` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `car` int(10) NOT NULL,
  `worker` int(10) NOT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `car_worker` (`id`, `car`, `worker`) 
VALUES
(1, 1, 1),
(2, 1, 3),
(3, 2, 3),
(4, 2, 5);

 

2. נכתוב שאילתה ששואלת איזו מכונית שייכת לכל עובד

SELECT w.name AS worker_name, c.name AS car_name 
FROM car_worker AS cw 

INNER JOIN workers AS w 
ON w.id = cw.worker 

INNER JOIN cars AS c 
ON c.id = cw.car
  • ב-JOIN הראשון נצרף את טבלת workers לטבלת car_worker כשהעמודה המשותפת היא id העובד.
  • ב-JOIN השני נצרף את טבלת cars לטבלת car_worker כשהעמודה המשותפת היא id המכונית.
  • סה"כ, קיבלנו צירוף של שלושת הטבלאות.

 

3. נריץ את השאילתה

כשנריץ את השאילתה נקבל את התוצאה הבאה:

worker_name car_name
Moshe Talbot
Moshe Subaru
Yirmiyahu Sussita
Asher Sussita

שימו לב, משה מחזיק 2 מכוניות, ואת זה אנחנו יכולים לבטא בקלות הודות לשימוש בטבלת ציר, pivot.

 

לכל מדריכי ה-mySQL

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?

 

תמונת המגיב

דניאל AJ בתאריך: 22.04.2022

אליפווות תודה !!!!