2

最初のクエリループ内に2番目のクエリをネストせずに、2つのテーブルから結果を取得しようとしています。

私はテーブル製品を持っています:

product_code_1234 | product_name | otherfields...

そして、テーブルカテゴリ。製品は複数のカテゴリを持つことができます。

category_name_1 | product_code_1234
category_name_2 | product_code_1234
category_name_3 | product_code_1234

次の結果を取得するためのクエリはありますか?

product_code_1234 | product_name | ... | category_name_1 | category_name_2 | category_name_3
4

3 に答える 3

2
select * from a,b 

テーブルaのすべてのデータを、テーブルbのすべてのデータと組み合わせて提供します。

ただし、データの繰り返しが不要で、テーブルaとbの間に接続がない場合は、何らかの結合などがないと実行できません。

于 2013-01-24T16:03:55.700 に答える
2

次のテーブルがあるとします。

+----------------------------+
| PRODUCTS                   |
+------+-------------+-------+
| code | name        | price |
+------+-------------+-------+
| 1    | Bike Helmet | 99.99 |
| 2    | Shirt       | 19.99 |
+------+-------------+-------+

+-------------------+
| CATEGORIES        |
+------+------------+
| code | category   |
+------+------------+
| 1    | Sports     |
| 1    | Cycling    |
| 1    | Protection |
| 2    | Men        |
| 2    | Clothing   |
+------+------------+

別の SO answerに基づくクエリを次に示します。これは、私の解釈が正しければ、目的の結果と一致します。

SELECT p.code, p.name, p.prize,
    (SELECT category FROM categories c WHERE c.code = p.code LIMIT 0, 1) as category1,
    (SELECT category FROM categories c WHERE c.code = p.code LIMIT 1, 1) as category2,
    (SELECT category FROM categories c WHERE c.code = p.code LIMIT 2, 1) as category3,
FROM products p

結果は次のとおりです。

+------+-------------+-------+-----------+-----------+------------+
| code |    name     | price | category1 | category2 | category3  |
+------+-------------+-------+-----------+-----------+------------+
|    1 | Bike Helmet | 99.99 | sports    | cycling   | protection |
|    2 | Shirt       | 19.99 | men       | clothing  | NULL       |
+------+-------------+-------+-----------+-----------+------------+

ただし、結果に動的な数のカテゴリを含めることはできません。この場合、質問のように数を 3 に制限しました。より優れたパフォーマンスのソリューションがまだ存在する可能性があります。また、これは明らかにネストされたクエリであるため、ニーズにはおそらく適していません。それでも、それは私が思いつくことができる最高のものです。

加入

SQL JOIN句もあります。これは、探しているものかもしれません。

SELECT *
FROM products
NATURAL JOIN categories

最終的には次の結果になります。

+------+-------------+-------+------------+
| code | name        | price | category   |
+------+-------------+-------+------------+
| 1    | Bike Helmet | 99.99 | sports     |
| 1    | Bike Helmet | 99.99 | cycling    |
| 1    | Bike Helmet | 99.99 | protection |
| 2    | Shirt       | 19.99 | men        |
| 2    | Shirt       | 19.99 | clothing   |
+------+-------------+-------+------------+
于 2013-01-24T17:13:29.893 に答える
0

2 つの別々のクエリを実行する必要があると思います。

1 つは製品を取得するためのもので、もう 1 つは製品カテゴリを取得するためのものです。

次に、任意のスクリプト言語 (PHP など) を使用して、必要な結果 (表示、エクスポートなど) を実現します。

于 2013-01-24T16:36:15.010 に答える