Re: [SQL ] JOIN 讓其中一欄的值變成Column名稱
※ 引述《myhome6206 (Rice)》之銘言:
: (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
:    資料庫名稱:MySQL
:    資料庫版本:5.X
: 內容/問題描述:
: 我有兩個Table
: 一個是
: Table:1         Table:2
: id data         id key value
: --------        ------------
:  1 xxx           1  A  aaa
:  2 xxx           1  B  bbb
:                  2  A  xxx
:                  2  B  yyy
: 然後可以join這兩個table 變成
: id data  A   B
: ------------------
:  1 xxx  aaa bbb
:  2 xxx  xxx yyy
: 雖然說我覺得這有點智障,應該是在設計的時候就把A B當作Table1的column
: 才對,是因為這次從wordpress原有的架構去改的,也沒不能動原本的架構了
線上SQL : http://sqlfiddle.com/#!9/6b390/3
看完題目後一分鐘內的直覺解法
所以有可能不是最佳解
我是這樣想的:tb1 和 tb2 你想合在一起可是不知道怎麼處理 key
所以我第一步就想:key有AB兩種,如果今天key只有A這一種時,怎麼做?
tb1          tb3
 id data    id value
 --------    ----------
  1 xxx      1 aaa
  2 xxx      2 xxx
阿就直接join阿,只是把tb3 的 value 欄位名稱改成A就是了
同理,key=B時也是一樣的做法,所以join兩次就解決
所以,下一個問題就是可以由 tb2 得到 tb3 和 tb4 嗎?
那就用 select  where `key`='A' 這樣的條件就可以
所以把上面的幾個子問題合併後
最後就是那個靠直覺想出來的答案
-----
把SQL貼過來好了,如果線上SQL服務掛了也可以看
-----
建立測試用假資料:
create table tb1 (
  `id` int ,
  `data` varchar(5)
);
insert into tb1 (id,data) values (1,'xxx'),(2,'xxx');
create table tb2 (
  `id` int ,
  `key` char(1),
  `value` varchar(5)
);
insert into tb2 (id,`key`,`value`) values
(1,'A','aaa'),(1,'B','bbb'),(2,'A','xxx'),(2,'B','yyy');
-----
解:
select *
from tb1
natural left join
(
    select id,`value` A
    from tb2
    where `key`='A'
)tb3
natural left join
(
    select id,`value` B
    from tb2
    where `key`='B'
)tb4
;
--
          ◣▁▁ ◢  ▄▄▄▄▄▄▄   .        *     ▃               ▃      
    ▁▁◢        ◤◢狼出沒注意!  .     ˊ      . ▎ ▅▂      ▂▅         
 ◢        ◢◤  ◣  ▄▄▄▄▄▄▄     .           ▊                        
 ◥▁▃▂▁       ◣       ◆↗http://chippclass.99k.org/↙◆                 
   ◥  ▇▇▇      ◣           ◆↗telnet://bs2.to (P_chippclass)↙◆        
    ▇▆▅▂  ψchippclass                                ▅▂▁              
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.177.167
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1462878377.A.689.html
※ 編輯: chippclass (1.161.177.167), 05/10/2016 19:09:30
推
05/11 15:40, , 1F
05/11 15:40, 1F
※ 編輯: chippclass (1.161.175.154), 05/11/2016 23:00:05
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章
                            12
                        
                            32