2016-05-09 12 views
0

親と子の2つのテーブルがあります。 Parentにはunique_idというフィールドがあり、childにはparent_unique_idというフィールドがあり、それは子テーブルの外部キーです。親テーブルには同じunique_idのレコードが4つあり、子テーブルには同じunique_idのレコードが5つあります。MySql親キーが複数の値を持つ子テーブルのレコードのみを取得する

レコードを取得するためにそれらを結合すると、子テーブルの各レコードが4回繰り返されて合計20レコードが取得されます。

私が使用しているクエリが

SELECT c.* FROM child c JOIN parent p ON c.parent_unique_id = p.unique_id 

である私は、LEFTは同様にJOINを試みたが、私はまだ繰り返して20件のレコードを取得しています。もちろん

SELECT c.* 
FROM child c 
WHERE c.parent_unique_id IN (SELECT p.unique_id FROM parent p); 

、あなたは自分のクエリにSELECT DISTINCTを平手打ちできます

+1

'Parent'でユニークな' unique_id'はありませんか?それは非常に間違った命名規則のようです。 –

+0

それは私がそれを構築し始めた間に起こった技術的なミスでした。今、私はそのunique_idを別のテーブルに分けるために取り組んでいます。通知をありがとう – spod

答えて

1

一つの方法は、INまたはEXISTSを使用することです。しかし、これには、不要な処理が必要です。

+0

それは働いた。ありがとうございました。私は答えをマークしますが、もう少し答えを待つようにします。 – spod

関連する問題