2014-10-09 46 views
0

我有以下查詢填充給定用戶的所有'主題'選項的連接表。MySQL查詢預填充連接表與所有其他兩個表中的所有id組合

INSERT INTO join_themes_users (join_theme_id, join_user_id); 
SELECT theme_id, 1 
FROM themes 

我現在需要做的就是修改這個查詢來填充參加表格,表格中的所有用戶

可以這樣在單個查詢來完成,或者我需要創建一個for循環的所有主題選項在PHP中?

上面的查詢產生的結果看起來像......

join_id  |  user_id  |  theme_id 
---------------------------------------------------- 
1    1     1 
2    1     2 
3    1     3 
... 

我需要的是這樣的事情...

join_id  |  user_id  |  theme_id 
---------------------------------------------------- 
1    1     1 
2    1     2 
3    1     3 
... 
14    2     1 
15    2     2 
16    2     3 
... 
27    3     1 
28    3     2 
29    3     3 
... 

回答

2

爲了讓你CROSS JOIN表中的所有組合:

INSERT INTO join_themes_users (join_theme_id, join_user_id) 
SELECT themes.theme_id, users.user_id 
FROM themes 
CROSS JOIN users 
+0

我以前沒有遇到過'CROSS JOIN',但它做到了!謝謝 – Tom 2014-10-09 14:33:54

+0

不客氣。交叉連接是很少需要的。其結果被稱爲笛卡爾產品。也許你聽說過。當用戶使用過時的逗號分隔連接語法('FROM a,b')時,人們經常不由自主地交叉連接,並忘記添加連接條件。 – 2014-10-09 14:37:22

相關問題