3

私は3つのMySqlテーブルを持っています:-

  • tbl_part-part_idを持つパーツのリストが含まれています
  • tbl_product-product_idを持つ製品のリストが含まれています
  • tbl_part_to_product-部品と製品の間の1対多の関係が含まれています(part_id&product_id)

私は2つのことをしようとしています:-

  1. パーツが1つしかないすべての製品を選択します。
  2. 一部のみであるため、特定の部分のみを含むすべての製品を検索します。
4

2 に答える 2

4
SELECT
*
FROM
tbl_part part
INNER JOIN tbl_part_to_product p2p ON part.part_id = p2p.part_id
INNER JOIN tbl_product prod ON p2p.product_id =prod.product_id
WHERE part.name = 'whatever'
GROUP BY prod.product_id
HAVING COUNT(*) = 1

パーツが 1 つしかないすべての製品を選択するには、WHERE 句を削除するだけです。

パーツ テーブルに結合したくない場合:

SELECT
*
FROM
tbl_product prod
INNER JOIN tbl_part_to_product p2p ON p2p.product_id =prod.product_id
GROUP BY prod.product_id
HAVING COUNT(*) = 1
于 2012-12-20T15:05:25.577 に答える
0

両方の質問に答えましょう:

パーツが1つしかないすべての製品を選択します。

SELECT tbl_product.*
FROM
tbl_product product
INNER JOIN tbl_part_to_product ptop ON ptop.product_id = product.product_id
GROUP BY product.product_id
HAVING COUNT(ptop.part_id) = 1

一部のみであるため、特定の部分のみを含むすべての製品を検索します。

SELECT tbl_product.*
FROM
tbl_product product
INNER JOIN tbl_part_to_product ptop ON ptop.product_id = product.product_id
INNER JOIN tbl_part part ON ptop.part_id = part.part_id
WHERE part.part_name = 'some name'
GROUP BY product.product_id
HAVING COUNT(ptop.part_id) = 1

いずれかのクエリからGROUPingエラーが発生した場合は、すべてのtbl_productフィールドをGROUPに追加する必要があります。

于 2012-12-20T15:22:50.313 に答える