1

这是我的 2 个规范化表,其中 Clientid 为 Telephone 表

(ClientID int Primary key,
FName varchar(25),
LName varchar(25),
HomeAddress varchar(50))

CREATE TABLE Telephone
(TelephoneID tinyint IDENTITY(1,1)Primary key,
TelephoneNo int,
ClientID int foreign key references Client(ClientID))

所以我的客户表的值..

ClientID | FName  | LName |  HomeAddress   
    1      marvin    Biu    p.guevarra st. 
    2      harry    sendon     cali st. 

并进入我的电话桌..

 TelephoneID | TelephoneNo | ClientID  
        1        1234567        1
        2        7654321        1
        3        2222222        2

因为有可能客户有多个电话没有所以我想变成这样..

ClientID | FName  | LName |  HomeAddress   |   Telephones
    1      marvin    Biu    p.guevarra st.   1234567, 7654321
    2      harry    sendon     cali st.          2222222 

我只想出这样的代码

select distinct lname, CAST(telephoneno AS VARCHAR(10)) + ',' + CAST(telephoneno AS VARCHAR(10)) as Telephones
from telephone
left join client
on client.clientid = telephone.clientid

就这样结束了。。

 LName |   Telephones
 Biu      1234567, 1234567
 Biu      7654321, 7654321
 sendon     2222222 

请任何人帮助,表格以如上所示的简单形式结束,我真的想要 1234567 电话号码加入 7654321 电话号码,在电话栏之间有一个 Lname“Biu”栏。那是1行。:/

4

2 回答 2

1
SELECT 
  lname,
  Telephones = STUFF((SELECT ','+ CAST(t.telephoneno AS VARCHAR(10)) 
  FROM telephone t
  WHERE t.clientid  = c.clientid 
  For XML PATH('')
  ),1,1,'')
FROM client c
于 2013-09-26T16:02:44.973 回答
0

始终在联接中限定您的表,这样可以更清楚地看到发生了什么:

select distinct t.lname, CAST(t.telephoneno AS VARCHAR(10)) + ',' + CAST(c.telephoneno AS VARCHAR(10)) as Telephones
from telephone t
left join client c
on c.clientid = t.clientid
于 2013-09-26T16:14:40.147 回答