からマッチを取得する:基本的にJava MySQL | MySQLで3つのテーブルを考慮すると、多対多のグループ
product
id - name - (more columns, irrelevant) ...
13 - chair
64 - table
method
id - name
1 - welding
2 - stamping
10 - forging
product-method (many-to-many)
product_id - method_id
13 - 1
13 - 2
13 - 10
64 - 1
を、私は必要なもの、特定の製品にリンクされているメソッドの一覧です。
この例では、椅子を作るために使用されるすべてのメソッドを取得したいと考えています(product_id 13 in product-method)。返されたリストは、その後、次のようになります。私は方法年代を抽出するために、このクエリを試み
SELECT method_id
FROM `product-method`
WHERE `product_id` = 13
1を返し
、2及び10
:
welding
stamping
forging
私はこのクエリで始まっの名前はから返されます。method_id:
SELECT name
FROM `product-method`
WHERE id = (SELECT method_id FROM `product-method` WHERE product_id = 13)
これは何も返しません。
どのようなクエリを使用しますか?
SELECT name
FROM method
WHERE id IN
(SELECT method_id FROM product_method WHERE product_id = 13
)
それはproduct_methodテーブルから与えられたproduct_idに適用可能なmethod_idsを取得し、WHERE
句でIN
を用いる方法テーブルから、メソッドの名前を検索します。
JOINについてご覧ください。また、テーブル/カラムの識別子に ' - 'を使用しないでください – Strawberry