2013-06-19 35 views
-1

我有3個表中的SQL如下:串聯和模式匹配SQL

賬戶,含

id  zip  city 
---- ----- --------------- 
121 20085 Los Angeles 

客戶,含

user id zip 
------- ------ 
121  20085 

地址,含

zip  city-state 
----- ---------------- 
121  Los Angeles, CA 

我想添加在Accounts一個額外的列名爲location這將是一個連鎖領域,將採取cityAccountscity-state串連從Addr通過匹配city

我不能做常規連接所有在AccountszipAddr不在那裏,所以我將失去很多記錄,但該表Customer包含所有zipuser id所以我覺得我可以利用這一點。

輸出所需:

賬戶,含

user id zip city    location 
------- ----- ---------------- ---------------- 
121  20085 Los Angeles  Los Angeles;Los Angeles, CA 

回答

0

你這樣的事情後:

SELECT 
    `c`.`user_id`, 
    `c`.`zip`, 
    `a`.`city`, 
    CONCAT_WS(';', `c`.`city`, `aa`.`city-state`) AS `location` 
FROM 
    `Accounts` AS `a` 
LEFT JOIN 
    `Addr` AS `aa` 
    ON 
     `aa`.`zip`, `a`.`id` 
LEFT JOIN 
    `Customer` AS `c` 
    ON 
     `c`.`user id`, `a`.`id` 
+0

是的,我想從賬戶和都市連接兩個列城通過匹配城市並連接兩個字段並將其添加到帳戶表中,如Addr所示,如上例 – user2501342

+0

那怎麼樣? – Eth

+0

在第一個加入一個是zip和其他是id左加入 'Addr' AS'aa' ON 'aa'.'zip','a'.'id這是什麼意思我dint得到 – user2501342