0

これは私の最初のテーブルです:

ここに画像の説明を入力

これは、結合操作を実行したい別のテーブルです:

ここに画像の説明を入力

"activity_cc" 列の first_name を取得したい

たとえば、 activity_id=2 の Pritam,Niket を表示したい

これらの値を取得するにはどうすればよいですか?

4

4 に答える 4

0

Pratikの構造を考える

CREATE TABLE tableC
(
ACTIVITY_ID int,
REG_ID int,
PROJ_ID int,
DOSS_ID int,
ACTIVITY_TO int,
ACTIVITY_CC varchar(500)
);

INSERT INTO tableC select 4, 1,1,1,1, '3,4';
INSERT INTO tableC select 5, 2,2,2,2, '5,6';
INSERT INTO tableC select 6, 3,3,3,3, '3,5';


CREATE TABLE tableD
(
REG_ID int,
FIRST_NAME VARCHAR(100),
LAST_NAME  VARCHAR(100)
);

INSERT INTO tableD select 3,  'Pritam',  'Sharma';
INSERT INTO tableD select 4,  'Pratik',  'Gupta';
INSERT INTO tableD select 5,  'Niket',  'Vaidya';
INSERT INTO tableD select 6,  'Ajinkya',  'Satwa';

あなたはこれを行うことができます:

SELECT tableD.FIRST_NAME
FROM tableD
JOIN tableC ON tableC.ACTIVITY_CC LIKE CONCAT('%', tableD.REG_ID, '%')
GROUP BY tableD.FIRST_NAME;

また

SELECT FIRST_NAME
FROM tableD, tableC
WHERE tableC.ACTIVITY_CC LIKE CONCAT('%', tableD.REG_ID, '%')
GROUP BY tableD.FIRST_NAME;
于 2015-01-07T14:26:49.810 に答える
0

@HLGEM に完全に同意しますが、この特定の問題を解決するにはコストが高くなります。私はあなたがここで達成したいようにしようとしました。必要に応じて変更してくださいjoin。さらにサポートが必要な場合はお知らせください。

サンプル スキーマ

create table tableC (ACTIVITY_ID int, REG_ID int,PROJ_ID int,DOSS_ID int,ACTIVITY_TO int, ACTIVITY_CC varchar(500))

insert into tableC select 4, 1,1,1,1, '3,4';
insert into tableC select 5, 2,2,2,2, '5,6';
insert into tableC select 6, 3,3,3,3, '3,5';


create table tableD (REG_ID int , FIRST_NAME  VARCHAR(100), LAST_NAME  VARCHAR(100))

insert into tableD select 3,  'Pritam',  'Sharma';
insert into tableD select 4,  'Pratik',  'Gupta';
insert into tableD select 5,  'Niket',  'Vaidya';
insert into tableD select 6,  'Ajinkya',  'Satwa';

サンプルクエリ

with names as
(
    select C.ACTIVITY_ID,C.ACTIVITY_CC
    ,Names = D.FIRST_NAME
    from tableC C
    inner join tableD D on charindex(cast(D.REG_ID as varchar), C.ACTIVITY_CC) > 0
 )
select 
C.ACTIVITY_ID,C.REG_ID,PROJ_ID,DOSS_ID,ACTIVITY_TO,ACTIVITY_CC
,Names = stuff
(
  (
    select ',' + Names
    from names n
    where n.ACTIVITY_ID = D.REG_ID
    for xml path('')
  )
  , 1
  , 1
  , ''
)
from tableD D
inner join tableC C on C.ACTIVITY_ID = D.REG_ID

SQLFiddleにも追加

于 2013-06-07T04:06:33.457 に答える