0

次のような中間テーブルがあります(他の2つのテーブルに参加した後):

    ID Meta_key Meta_value
    

    22 カンパニー アマゾン

    22 アドレス シアトル


    25 グーグル社

    25 アドレス マウンテン ビュー

    

等々...

私の質問は、単一のクエリを記述して、特定の ID の会社名と住所の両方を取得する最も簡単な方法は何ですか? select meta_value from table where meta_key = "Company" and meta_key = "Address" のようなものが必要なので、この where 句を構造化する最良の方法は何ですか (明らかに機能しません)...簡単な方法があると確信しています結果セット内の company と address の meta_value を区別するためのエイリアスも必要です。

前もって感謝します

4

2 に答える 2

2

両方のキーを同じ行に入れたい場合は、テーブルを自己結合できます

SELECT t1.ID, t1.Meta_value as "Company", t2.Meta_value as "Address"
FROM table t1
JOIN table t2 ON t2.ID = t1.ID AND t2.Meta_key = "Address"
WHERE t1.Meta_key = 'Company'

または、サブクエリを使用して単一の ID をさらにシンプルにしたい場合:

SELECT 
    22 as "ID",
    (SELECT Meta_value FROM table WHERE id = 22 AND Meta_key = "Company") as "Company",    
    (SELECT Meta_value FROM table WHERE id = 22 AND Meta_key = "Address") as "Address";    
于 2012-08-02T07:47:32.977 に答える
0
SELECT CASE WHEN meta_key ='Address'
       THEN Meta_value
       ELSE ''
END AS address,
CASE WHEN meta_key ='Company'
       THEN Meta_value
       ELSE ''
END AS company
FROM tbl where id=22 
于 2012-08-02T07:41:49.617 に答える