2017-03-06 18 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

hmmm。私はあなたが自己結合を望むと思う。

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

小さな変化が1つ。私はあなたのクエリを実行し、出力が反転されます。最初の行でp1.id_productとp2.id_productを交換すると、それが修正されます。それ以外に、素晴らしい答え。 – Ethilium

+1

これはどのようにすることができますか?ゴードンが与えた質問は、p1とp2に関して対称的です!おそらくあなたは何か誤解しているでしょうか? –

+1

投票済み!しかし、私はまだそれがどのように動作するのか理解できません。また、(単に表を作成するために) 'order by p1.id_product、p2.id_product ASC'を追加しました。これは魅力的に機能します。あなたは私に少し説明を与えることができますか?少なくとも2行前もって感謝します。 – Vixed

関連する問題