2017-01-22 13 views
0

SQLでクエリを実行しようとしていますが、解決できません。同じテーブルのSQL JOIN

enter image description here

私は何をしたいことは同じ都市に住んでいるクライアントの各ペアを見つけるために、同じテーブルでのJOINです: 私はテーブル​​を持っています。

私はこのやろう:

SELECT DISTINCT c.codiClien, c.nombreClien, c1.codiClien, c1.nombreClien, c.ciudadClien 
FROM tCliente c 
INNER JOIN tCliente c1 ON c.ciudadClien = c1.ciudadClien 

をし、これを取得する:

enter image description here

をしかし、私はは、この取得する必要があります

enter image description here

私が知っています私はデータをフィルタリングする必要がありますが、私は多くのことを試みましたが、解決策を見つけることができません。 また、私はGROUP BYを使用しようとしましたが、これはできません。私は、それは、ペアによってグループにこのような何か欲しかっ:

... 
GROUP BY c.codiClien, c1.codiClien 

をしかし、そうすることで、私は、クエリでエラーが発生します。誰かが私を助けてくれますか?おかげ

注:INNER JOINONを使用する場合は、通常のものがtb1.id = tb2.id

を行うことですので 、私は、それを行うには「可能」であるか、それを行うべきではないかどうかを知りたいです

答えて

2

内部結合で自身を除外する必要があります。

SELECT c.codiClien, c.nombreClien, c1.codiClien, c1.nombreClien, c.ciudadClien 
FROM tCliente c 
INNER JOIN tCliente c1 
    ON c.ciudadClien = c1.ciudadClien 
    AND c.codiClien < c1.codiClien; 
+0

@McNets私もそれを試しましたが、相談のペアが繰り返されます。つまり、たとえばペアが(1,2)の場合は、(2,1) –

+0

@GordonLinoffのcodiClienが索引のように見えます。はい、賢い、ありがとう。 – McNets

+0

@McNetsあなたはちょうどあなたがしてくださいクエリのロジックを言葉で説明することができますか? <>を使用していたので、<と違いはありますか? –

関連する問題