2017-03-06 64 views
2

我越來越瘋狂創建一個從一個選擇相同的模型表插入。 我認爲我應該創建一個臨時表來闡述所有模型,但是如何? 下面的表格我有:產品相同型號到相關產品表

表產品

+------------+----------+ 
| id_product | id_model | 
+------------+----------+ 
|   1 | D  | 
|   2 | D  | 
|   3 | A  | 
|   4 | C  | 
|   5 | D  | 
+------------+----------+ 

這裏表我想創建,但我的最好的問題是,在相關的記錄應該重複像 ID1 - > ID2id2-> ID1

表再

+------------+-----------------+ 
| id_product | related_product | 
+------------+-----------------+ 
|   1 |    2 | 
|   1 |    5 | 
|   2 |    1 | 
|   2 |    5 | 
|   5 |    1 | 
|   5 |    2 | 
+------------+-----------------+ 

回答

5

嗯。我認爲你只是想自我加入

select p1.id_product, p2.id_product as related_product 
from product p1 join 
    product p2 
    on p1.id_model = p2.id_model and 
     p1.id_product <> p2.id_product; 
+0

一個微小的變化。我跑你的查詢和輸出翻轉。在第一行交換p1.id_product和p2.id_product可以解決這個問題。除此之外,很好的答案。 – Ethilium

+1

這怎麼可能? Gordon給出的查詢關於p1和p2是對稱的!也許你誤解了一些東西? –

+1

投了!但我仍然不明白它是如何工作的。我還添加了(只是爲了創建表)'通過p1.id_product,p2.id_product ASC'命令,它就像一個魅力。你能給我一點解釋嗎?至少兩排。提前致謝。 – Vixed