Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where are Cartesian Joins used in real life?

Tags:

sql

join

Where are Cartesian Joins used in real life?

Can some one please give examples of such a Join in any SQL database.

like image 782
rockbala Avatar asked Mar 04 '10 14:03

rockbala


People also ask

What is the use of Cartesian join?

Introduction. The CROSS JOIN is used to generate a paired combination of each row of the first table with each row of the second table. This join type is also known as cartesian join.

What is Cartesian join example?

Example Queries(CARTESIAN JOIN): In the below query we will select NAME and Age from Student table and COURSE_ID from StudentCourse table. In the output you can see that each row of the table Student is joined with every row of the table StudentCourse. The total rows in the result-set = 4 * 4 = 16.

Which join is used for Cartesian product?

A CROSS JOIN is a JOIN operation that produces the Cartesian product of two tables.

What are joins in SQL explain all the join with their real world application?

Introduction to JOIN With relational databases, the information you want is often stored in several tables. In such scenarios, you'll need to join these tables. This is where the SQL JOIN comes into play. The JOIN clause in SQL is used to combine rows from several tables based on a related column between these tables.


1 Answers

This is the only time in my life that I've found a legitimate use for a Cartesian product.

At the last company I worked at, there was a report that was requested on a quarterly basis to determine what FAQs were used at each geographic region for a national website we worked on.

Our database described geographic regions (markets) by a tuple (4, x), where 4 represented a level number in a hierarchy, and x represented a unique marketId.

Each FAQ is identified by an FaqId, and each association to an FAQ is defined by the composite key marketId tuple and FaqId. The associations are set through an admin application, but given that there are 1000 FAQs in the system and 120 markets, it was a hassle to set initial associations whenever a new FAQ was created. So, we created a default market selection, and overrode a marketId tuple of (-1,-1) to represent this.

Back to the report - the report needed to show every FAQ question/answer and the markets that displayed this FAQ in a 2D matrix (we used an Excel spreadsheet). I found that the easiest way to associate each FAQ to each market in the default market selection case was with this query, unioning the exploded result with all other direct FAQ-market associations.

The Faq2LevelDefault table holds all of the markets that are defined as being in the default selection (I believe it was just a list of marketIds).

SELECT FaqId, fld.LevelId, 1 [Exists]
FROM Faq2Levels fl
  CROSS JOIN Faq2LevelDefault fld
WHERE fl.LevelId=-1 and fl.LevelNumber=-1 and fld.LevelNumber=4
UNION
SELECT Faqid, LevelId, 1 [Exists] from Faq2Levels WHERE LevelNumber=4
like image 113
Robert Hui Avatar answered Sep 21 '22 05:09

Robert Hui