1

MySQL データベースに次のテーブルがあるとします。

TABLE Products
| id | some_column1 | some_column2 |

TABLE ProductProperties
| id | product_id | name |

単純化しすぎましたが、十分です。ここで、プロパティを持つすべての製品を取得したいと考えています。そうです:

SELECT * FROM `Products` JOIN `ProductProperties` ON Products.id = ProductProperties.product_id

何を得るか?

| id | some_column1 | some_column2 | id | product_id | name |

かっこよくないので、次の 2 つの方法のいずれかでかっこよくしたいと思います。

1) Product テーブルのようにオブジェクトの配列を取得しますが、もう 1 つのメンバーによって拡張されます。これは、JOIN に一致するプロパティの配列になります。もう無理だとわかったのでは?

2) このような配列を取得するには (PHP で繰り返し処理して、1 つの製品のすべてのプロパティを 1 つのオブジェクトに結合する必要があります):

| product_id | some_column1 | some_column2 | property_id | product_id | name |

そこで、列 ProductProperties.id の名前を ProductProperties.property_id に変更したいと思います。出力からも ProductProperties.product_id を削除できれば理想的ですが、今のところ、出力の 1 つの列の名前を変更する方法だけが必要です。または、テーブル名の前に付けます。またはそのようなもの。

実行可能ですか?

4

2 に答える 2

4

列に明示的に名前を付ける必要があり、使用しないでください*。次に、冗長な列を返さないでください:

SELECT p.id as productid, p.some_column1, p.some_column2,
       pp.id  as ProductPropertiesId, pp.name
FROM `Products` p JOIN `ProductProperties` pp
    ON p.id = pp.product_id

また、テーブル エイリアスを使用すると、このようなクエリが読みやすくなります。

于 2013-02-11T19:49:30.453 に答える
2
SELECT Products.id product_id,
       Products.some_column1,
       Products.some_column2,
       ProductProperties.id property_id,
       ProductProperties.name
FROM `Products` 
JOIN `ProductProperties` 
ON Products.id = ProductProperties.product_id
于 2013-02-11T19:52:27.017 に答える