1

こんにちは私は3つの列を持ついくつかのcms(製品)のテーブルを持っています:

product_id feature_id value
1          1          blue
1          8          cotton
2          5          t-shirt
2          1          red
3          8          wool
1          9          large

各製品には独自のIDがあり、各製品には機能のリスト(約10個)があります。各feature_idは機能を表します。feature_idに応じて、「value」列にはそのタイプの機能の値が含まれます。

たとえば、服を想像してみてください。1つのユニークなproduct_id->1つの布->色の種類や素材の価格サイズなどの多くの機能/プロパティ。

質問は次のような3行をフェッチすることが可能ですか

product_id value1 value2
1          blue   large
2          red    medium
3          green  xsmall
4          purple xlarge

ここで、value1は、製品1のfeature_id = 1の場合の値列の文字列であり、value2は、製品1のfeature_id = 9の場合の値列の文字列です(サイズの場合はfeature_id)。

phpで配列をマージせずに、これを1つのステートメントで行う方法を理解できません。

4

3 に答える 3

1

参加は機能します:http: //dev.mysql.com/doc/refman/5.0/en/join.html

SELECT * FROM tbl_Products 
JOIN tbl_Features ON tbl_Products.product_id = tbl_Features.product_id
WHERE tbl_Features.feature_id = ?

また

SELECT * FROM tbl_Products 
JOIN tbl_Features ON tbl_Products.product_id = tbl_Features.product_id
WHERE tbl_Features.feature_id in (1, 2, 3, 4)
于 2012-11-22T22:49:23.453 に答える
0

あなたはこのようにそれを行うことができます:

select p.product_id
       (select value
          from product_features pf
         where pf.product_id = p.product_id
           and pf.feature_id = 1) as feature_1
       (select value
          from product_features pf
         where pf.product_id = p.product_id
           and pf.feature_id = 9) as feature_9
  from p.products

クエリは標準SQLであるため、準拠しているデータベースであればすべて受け入れる必要があります。

私はあなたがproductsとproduct_featuresテーブルを持つ通常のデザインを持っていると仮定しています

于 2012-11-23T03:41:17.127 に答える
0
SELECT DISTINCT product_id AS book_id, (

SELECT value
FROM cscart_product_features_values
WHERE product_id = book_id
AND feature_id =  '1'
) AS publisher, (

SELECT value
FROM cscart_product_features_values
WHERE product_id = book_id
AND feature_id =  '8'
) AS author
FROM  `cscart_product_features_values` 
ORDER BY product_id

いくつかのテストの後、これはうまく機能します:)

于 2012-11-23T11:54:38.033 に答える