1

私はSQLの初心者で、ここで何かをしたいと思っています。おそらく説明方法がわからないため、正しく検索していない可能性があります。

問題は次のとおりです。別のテーブルのプロパティの補助セットとして機能する 3 つの列を持つテーブルがあります (ただし、それは問題とは関係ありません)。

私が持っているもの:

--------------------------------------------
 listing_id  |  field_id  |  listing_value
--------------------------------------------
    1             Fruit        Apple
    1             Color        Red
    2             Fruit        Banana
    2             Color        Yellow
    3             Fruit        Grape
    3             Color        Purple

私が取得したいもの:

----------------------------------------------------
 listing_id  |  listing_value_1  |  listing_value_2 
----------------------------------------------------
    1             Apple               Red
    2             Banana              Yellow
    3             Grape               Purple

これはすべて同じテーブルで行われていることに注意してください。これはすべて値を選択するためのものなので、クエリは次で始まる必要がありますSELECT

コマンドを試しましたJOIN, GROUP and UNIONが、成功した結果は得られませんでした。

また、いくつかのコマンドがないphpMyAdminを介してこれを機能させようとしています(たとえば、使用できませんINTERSECT、使用できますSelect * FROM xが、使用できないようですSELECT x.*

前もって感謝します :)

4

2 に答える 2

1

これは、集計関数とCASE:を使用して行うことができます。

select listing_id, 
  max(case when field_id = 'Fruit' then listing_value end) listing_value_1,
  max(case when field_id = 'Color' then listing_value end) listing_value_2
from yourtable
group by listing_id

SQL FiddlewithDemoを参照してください

于 2012-09-15T15:54:26.760 に答える
0

これを試して

SELECT t1.listing_id , t1.listing_value as listing_value1 , t2.listing_value as listing_value2
  FROM table t1, table t2 where t1.listing_id = t2.listing_id AND t1.field_id = "Fruit" AND t2.field_id = "Color"
于 2012-09-15T15:37:59.800 に答える