SQL - Cross Join

Cross Join

  • Cross joins 是 2 個 tables 裡面的全部所有組合
  • 使用時機 :
    • 想知道黑色外套的 S, M, L, XL 個別幾件, 這個時候就可以用 Cross Joins
  • 回傳的 rows 會是 nxm, 假設 table1 有 n rows, table2 有 m rows
  • Syntax :
    SELECT * FROM t1 
    CROSS JOIN t2;
    
  • 並沒有 on 或者是 using clause
  • 如果 table1 和 table2 有 relationship 的情況下, 加上 where clause 跟 cross join 就會變成 inner join
SELECT * FROM t1 
CROSS JOIN t2 
WHERE t1.id = t2.id;
  • 可以知道每一家 store 全部的產品, 還有價格
select *
from stores s
cross join products p
;
  • 想要比較清楚的排列, 就可以使用 group by
select *
from stores s
cross join products p
group by s.store_name, p.product_name
;

留言