0

答えはもう必要ありません。

MySQL データベースに次の 2 つのテーブルがあります。

**Child**
id
name
parent_id

**Parent**
id
name

私がしたいのは、両方のテーブルをクエリしますが、一意の結果を返すことです (重複はありません)。 Child.name が %query% のように両方のテーブルを検索し、すべての子要素を返したいのですが、すべての子も返したいです。 Parent.name が LIKE %query% である Parent の JOIN が機能する可能性があると思いますが、JOIN の使用方法に慣れていません。

データと出力の例を次に示します。

Child:
id          1
name        Jesse
parent_id   1

Child:
id          2
name        Walter Jr.
parent_id   1

Parent:
id          1
name        Skylar

ユーザーが「Jesse」をクエリすると、1 つの結果が返されます - 名前が LIKE %Jesse% の子。ユーザーが「Skylar」にクエリを実行すると、2 つの結果が返されます - Child where parent_id = Parent.id WHERE Parent.name is LIKE %Skylar% したがって、Skylar に属する両方の子が返されます。

前もって感謝します!

編集:また、私は子を親に逆参照しています。

4

1 に答える 1

1

を使用UNIONして、1 つのクエリ (子テーブルのみ) からの一致を、2 番目のクエリ (子テーブルと結合された親テーブル) からの一致と組み合わせることができます。

SELECT id, name
FROM   Child
WHERE  name LIKE '%query%'

UNION

SELECT Child.id, Child.name
FROM   Parent JOIN Child ON Child.parent_id = Parent.id
WHERE  Parent.name LIKE '%query%'
于 2012-07-02T02:38:54.083 に答える