logo

MySQL CROSS JOIN

MySQL CROSS JOIN משמש לשילוב כל האפשרויות של שתי הטבלאות או יותר ומחזיר את התוצאה המכילה כל שורה מכל הטבלאות התורמות. ה-CROSS JOIN ידוע גם בשם CARTESIAN JOIN, המספק את המוצר הקרטזיאני של כל הטבלאות הקשורות. ניתן להסביר את המכפלה הקרטזית ככול השורות הקיימות בטבלה הראשונה כפול כל השורות הקיימות בטבלה השנייה. זה דומה ל-Inner Join, שבו תנאי ההצטרפות אינו זמין עם סעיף זה.

קאט טמפף

אנו יכולים להבין זאת באמצעות הייצוג הוויזואלי הבא שבו CROSS JOIN מחזיר את כל הרשומות מטבלה1 ומטבלה2, וכל שורה היא שילוב השורות של שתי הטבלאות.

MySQL CROSS JOIN

תחביר MySQL CROSS JOIN

מילת המפתח CROSS JOIN משמשת תמיד עם המשפט SELECT ויש לכתוב אותה אחרי משפט FROM. התחביר הבא מביא את כל הרשומות משתי הטבלאות המצטרפות:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

בתחביר שלמעלה, רשימות העמודות הן שם העמודה או השדה שברצונך להחזיר וטבלה1 וטבלה2 הוא שם הטבלה שממנו אתה מביא את הרשומות.

MySQL CROSS JOIN דוגמה

הבה ניקח כמה דוגמאות כדי להבין את פעולתו של סעיף 'הצטרפות שמאלית' או 'הצטרפות שמאלית':

סעיף CROSS JOIN לחיבור שני שולחנות

כאן, אנחנו הולכים ליצור שתי טבלאות 'לקוחות' ו 'אנשי קשר' שמכיל את הנתונים הבאים:

טבלה: לקוחות

MySQL CROSS JOIN

טבלה: אנשי קשר

MySQL CROSS JOIN

כדי להביא את כל הרשומות משתי הטבלאות, בצע את השאילתה הבאה:

 SELECT * FROM customers CROSS JOIN contacts; 

לאחר ביצוע מוצלח של השאילתה, היא תיתן את הפלט הבא:

MySQL CROSS JOIN

כאשר ההצהרה CROSS JOIN מבוצעת, תראה שהיא מציגה 42 שורות. המשמעות היא שבע שורות מטבלת הלקוחות מוכפלות בשש השורות מטבלת אנשי הקשר.

הערה: כדי להימנע מתוצאה של עמודות חוזרות פעמיים, מומלץ להשתמש בשמות עמודות בודדים במקום במשפט SELECT *.

בעיית עמודות דו-משמעיות ב-MySQL CROSS JOIN

לפעמים, אנחנו צריכים להביא את רשומות העמודות שנבחרו ממספר טבלאות. טבלאות אלה יכולות להכיל כמה שמות עמודות דומים. במקרה זה, הצהרת MySQL CROSS JOIN זורקת שגיאה: שם העמודה אינו ברור. זה אומר ששם העמודה קיים בשתי הטבלאות, ו-MySQL מתבלבל לגבי איזו עמודה אתה רוצה להציג. הדוגמאות הבאות מסבירות זאת בצורה ברורה יותר:

 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

ה-CROSS JOIN לעיל זורק שגיאה כפי שמופיעה בתמונה למטה:

MySQL CROSS JOIN

ניתן לפתור בעיה זו על ידי שימוש בשם הטבלה לפני שם העמודה. ניתן לכתוב מחדש את השאילתה לעיל כ:

 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

לאחר ביצוע השאילתה לעיל, נקבל את הפלט הבא:

MySQL CROSS JOIN

שמאל הצטרף עם סעיף WHERE

הסעיף WHERE משמש להחזרת לְסַנֵן תוצאה מהטבלה. הדוגמה הבאה ממחישה זאת עם סעיף CROSS JOIN:

instanceof ב-java
 SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price&gt;1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named &apos; <strong>customers&apos;</strong> and &apos; <strong>orders&apos;</strong> . Let us create one more table and name it as &apos; <strong>contacts&apos; that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>

לאחר ביצוע מוצלח של השאילתה לעיל, הוא ייתן את הפלט הבא:

MySQL CROSS JOIN