-1

以下のテーブル構造(MYSQL + PHP)の結果として、以下を取得したい

array[0][name]1,[desc]red,[title]hero,[desc]strong,[desc2]smells,[img][0]red1,[img][1]red2,[img][2]red3,ext[0].jpg,[ext][1].gif,[ext][2].png,[count][0]253,[count][1]211,[count][2]21,[count][3]121,[dist][0]5,[dist][1]5,[dist][2]12,[dist][3]2,[score][0]2,[score][1]3,[score][2]1,[score][3]5,[score][4]4,[val][0]5,[val][1]1,[val][2]4,[val][3]3,[val][4]4

単純なSELECT、JOIN、およびGROUP_CONCATで発生する問題は、すべての画像を選択した後に値が重複することです。

PHPでforeachループと組み合わせて行ごとにデータを選択するなど、他のさまざまな方法を試しましたが、多くの重複が発生し、非常に面倒に見えます。

また、1つではなく複数の選択に分割することも考えていますが、1つの選択で実行できるかどうかを知りたいと思います。

誰かがMYSQLの選択を手伝ってくれませんか?ありがとう

game
+-----+----------+
| pid | name     |
+-----+----------+
|   1 |  red     |
|   2 |  green   |
|   3 |  blue    |
+-----+----------+

detail
+-----+------+--------+-------+--------+
|  id | pid  | title  |  desc | desc 2 |
+-----+------+--------+-------+--------+
|   1 |  1   | hero   |strong | smells |
|   2 |  2   | prince |nice   | tall   |
|   3 |  3   | dragon |big    | green  |
+-----+------+--------+-------+--------+

image
+-----+-----+-----+----+
|  id | pid | img |ext |
+-----+-----+-----+----+
|   1 |  1  | red1|.jpg|
|   2 |  1  | red2|.gif|
|   3 |  1  | red3|.png|
+-----+-----+-----+----+

devmap
+-----+-----+-------+------+
|  id | pid | count | dist |
+-----+-----+-------+------+
|   1 |  1  | 253   |  5   |
|   2 |  1  | 211   |  5   |
|   3 |  1  | 21    | 12   |
|   4 |  1  | 121   |  2   |
+-----+-----+-------+------+

stats
+-----+-----+-------+------+
|  id | pid | scrore| val  |
+-----+-----+-------+------+
|   1 |  1  | 2     |  5   |
|   2 |  1  | 3     |  1   |
|   3 |  1  | 1     |  4   |
|   4 |  1  | 5     |  3   |
|   5 |  1  | 4     |  3   |
+-----+-----+-------+------+
4

1 に答える 1

0

テーブル間の1:1を超えるマッピングを含むJOINを実行すると、データが重複することになり、クエリでそれを回避する方法はありません。

複数の選択に分割することも、結果セットをループして、不要な重複情報を削除することもできます。

于 2012-10-24T19:22:17.820 に答える