נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

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

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

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

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

 

= 3 + 5