2

私は以下のようなテーブル構造を持っています:

id |parent|name |value
1  | 0    | aaa |
2  | 0    | bbb |
3  | 0    | ccc |
4  | 1    |     | 111
5  | 1    |     | 222
6  | 3    |     | 333

子レコードがある場合は親を表示したい。

お気に入り:

(親 ID + 名前 + 値の最初の子)

1 - aaa - 111
3 - ccc - 333
4

1 に答える 1

1

データベースの最初の子の意味はありませんid。最小値または最小値で最初の子を取得できますが、値は特定の順序でテーブルに格納されないため、わかりません最初の値です。

ただし、が自動インクリメンタル列であると仮定するとid、最初の子の値は最小の値であり、idこれを行うことができます:

SELECT
  t1.parent,
  t2.name,
  t1.value
FROM tablename AS t1
INNER JOIN
(
  SELECT MIN(id) AS id, parent
  FROM tablename
  GROUP BY parent
) AS t22 ON t22.id = t1.id AND t1.parent = t22.parent
INNER JOIN tablename AS t2 ON t1.parent = t2.id;

ここで実際にそれを見てください:

これにより、次のことが得られます。

| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |

または:最小値で取得できます:

SELECT
  t1.parent,
  t2.name,
  MIN(t1.value) AS value
FROM tablename AS t1
INNER JOIN tablename AS t2 ON t1.parent = t2.id
GROUP BY t1.parent, t2.name;

実際に見てみましょう:

これにより、次のことが得られます。

| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |
于 2013-04-06T17:48:00.567 に答える