2012-06-14 33 views
0

我有名字的數組:在數組SQL查詢中的所有元素之間創建關係。

$names = array('ray'=>0,'bob'=>1,'sue'=>2,'jeff'=>3); 

然後我有一個存儲陣列中的每個關鍵字之間關係的表:

+----------+----------+ 
| id_a | id_b | 
+----------+----------+ 
| 0  | 1  | 
+----------+----------+ 
| 0  | 2  | 
+----------+----------+ 
| 0  | 3  | 
+----------+----------+ 
| 1  | 2  | 
+----------+----------+ 
| 1  | 3  | 
+----------+----------+ 
| 2  | 3  | 
+----------+----------+ 

此刻我的函數來存儲的關係是:

foreach($names as $name=>$id_a){ 
     foreach($names as $n2=>$id_b){ 
      if($name != $n2){ 
       INSERT INTO relationships (id_a,id_b) VALUES ($id_a,$id_b); 
      } 
     } 
     array_shift($names); 
    } 

我想知道是否有更快的SQL解決方案來處理這種類型的行動?

回答

1

您可以先構建插入的值數組,然後用a single query將其全部插入;那會更快。查詢會看起來像...

INSERT INTO relationships (id_a, id_b) VALUES (0, 1), (0, 2), (0, 3); 
+0

就這樣,呃?我要繼續提出這個問題,看看我是否可以引發另一種選擇。但是,我對您投票並表示感謝,我期待嘗試此解決方案。 –

相關問題