0

こんにちは、Stack Overflow の仲間の旅行者です。私が何を得ているのかをよりよく説明するために、写真以外でこれを尋ねる方法が完全にはわかりません. 万が一、これが他の場所で質問されていて、見つけられなかった場合は、お詫び申し上げます。

tableA と tableB の 2 つのテーブルがあります。TableA には、 id および displayName とマークされた列が含まれており、その中には数十の項目があります (簡単にするために、5 のみと仮定します)。ID 列は一意で、自動インクリメントされます。これは、検索の主キーでもあります。2 番目のテーブル (TableB) には、そのアイテムの ID も含まれていますが、TableA の ID への 4 つの参照と、関係のないいくつかの無関係な情報も含まれています。したがって、次のように表示されます。

TableA
-------------------------
|  id    |  displayName  |
-------------------------
|  1     |  itemA        |
|  2     |  itemB        |
|  3     |  itemC        |
|  4     |  itemD        |
|  5     |  itemE        |
-------------------------

TableB
--------------------------------------------------------
|  id    | name |  varA   |  varB   |  varC   |  varD   |
--------------------------------------------------------
|  1     | elm1 |    3    |    4    |    2    |    5    |
|  2     | elm2 |    4    |    5    |    2    |    1    |
|  3     | elm3 |    1    |    4    |    3    |    2    |
|  4     | elm4 |    2    |    1    |    5    |    4    |
|  5     | elm5 |    3    |    4    |    5    |    1    |
--------------------------------------------------------

現在、値を折りたたんで必要な情報を提供するクエリがあります: SQL: SELECT tB.name, tB.varA, tB.varB, tB.varC, tB.varD FROM tableB tB GROUP BY tB.name

ここでやりたいことは、varA、varB などを数値として表示する代わりに、データを TableA と関連付けて、displayName を挿入することです。だから代わりに

Result
-----------------------------------------------
| name |  varA   |  varB   |  varC   |  varD   |
-----------------------------------------------
| elm1 |    3    |    4    |    2    |    5    |
| elm2 |    4    |    5    |    2    |    1    |
-----------------------------------------------

次のように表示されます。

Result
-----------------------------------------------
| name |  varA   |  varB   |  varC   |  varD   |
-----------------------------------------------
| elm1 |  itemC  |  itemD  |  itemB  |  itemE  |
| elm2 |  itemD  |  itemE  |  itemB  |  itemA  |
-----------------------------------------------
4

1 に答える 1

2

グループ化後、4 つの結合を行うだけです。

PS私は理解していません.なぜあなたはテーブルBの名前で結果をグループ化します.

そのように groupung を作成する必要がないと仮定します (そうでない場合、他の値はあまり意味がありません):

SELECT b.name,
    aa.displayName as varA,
    ab.displayName as varB,
    ac.displayName as varC,
    ad.displayName as varD
FROM tableB as b
JOIN tableA as aa ON b.varA = aa.id
JOIN tableA as ab ON b.varB = ab.id
JOIN tableA as ac ON b.varC = ac.id
JOIN tableA as ad ON b.varD = ad.id;
于 2011-12-12T09:40:34.997 に答える