2017-11-23 1 views
-3

여기에 내 문제는, 나는 테이블에서 데이터를 선택하려고 테이블 B에서 데이터를 선택 컬럼 채우기 쿼리를 가지고, 테이블 C에서 데이터를 선택하지만 테이블 A, B 및 C는 관련이 없습니다. 아래 예와 같습니다.테이블 열이 쿼리를 포함

Table A 
ID Title  Query 
1 one  select note_nbr from table B 
2 two  select note_nbr from table C 
3 three  select note_nbr from table D 

I want output 
ID Title  note_nbr 
1 one  122 (from table B) 
1 one  153 (from table B) 
2 two  224 (from table C) 
3 three  713 (from table D) 
3 three  224 (from table D) 

쿼리 내가 하위 쿼리를 시도했지만 관련이 없기 때문에 가입 방법을 모른다. 열 단지 예를의 이름은

SELECT 
     TES.ID AS ID, 
     TES.NTFY_TTL AS TITLE, 
     NBR.NBR_ORD AS NOTE 
FROM 
    (SELECT 
      A.ID AS ID, 
      A.NTFY_TTL AS NTFY_TTL, 
      FROM A.ID A 
    ) TES 
LEFT JOIN 
    (
    SELECT 
      B.ID_NOTE AS ID 
      B.NOTE_NBR AS NBR_ORD 
    FROM 
      B.ID_NOTE B 
UNION ALL 
    SELECT 
      C.ID_NOTE AS ID 
      C.NOTE_NBR AS NBR_ORD 
    FROM 
      C.ID_NOTE C 
    ) 
NBR ON TES.ID 
+1

확실히 나쁜 db 디자인이다. note_nbr 테이블을 만드는 것을 고려하십시오. 테이블 A에서 외래 키 ID가 될 것입니다. –

+0

나는 문제에 대한 알림을 만들려고 했으므로 모든 알림 번호를 내 알림 테이블에 선택해야합니다. –

+0

다른 종류의 관계가 있어야합니다. 그렇지 않으면 테이블 b에만 연결되어야한다는 것을 어떻게 알 수 있습니까? –

답변

1

는 관계없이 가입 할 수 있습니다하지만 난 당신이 A, B 존재하는 경우에만 하나가

(예를 들어) 드롭 테이블에 가입 할 것으로 예상 표시되지 않습니다 ,CD;

create table a(id int, ntf_ttl varchar(6)); 
create table b(note_nbr int); 
create table c(note_nbr int); 
create table d(note_nbr int); 

insert into a values (1,'one'),(2,'two'),(3,'Threee'); 
insert into b values(123),(153); 
insert into c values(224); 
insert into d values(713),(224); 

select id,ntf_ttl,note_nbr from a cross join b 

result 
+------+---------+----------+ 
| id | ntf_ttl | note_nbr | 
+------+---------+----------+ 
| 1 | one  |  123 | 
| 1 | one  |  153 | 
| 2 | two  |  123 | 
| 2 | two  |  153 | 
| 3 | Threee |  123 | 
| 3 | Threee |  153 | 
+------+---------+----------+ 
6 rows in set (0.00 sec) 
+0

내가 원하는 것은 테이블 b에서 선택하는 쿼리의 모든 데이터입니다.이 테이블의 ID는 ID 테이블의 기반 행 쿼리에 표시됩니다. –

+0

당신이 무엇을 요구하고 있는지 분명하지 않습니다. 답안에서 데이터 모델을 사용하여 바꾸어 볼 수 있습니까? –

+0

미안하지만, 영어로 말하기가 어렵습니다. okey –

0
insert into a values (1,'ID'),(1,'TITLE'),(1,'select note_nbr from table b(*this column query)'); 
insert into a values (2,'ID'),(2,'TITLE'),(2,'select note_nbr from table c(*this column query)'); 
insert into b values(123); 
insert into c values(123); 

not like this, result 
+------+---------+----------+ 
| id | ntf_ttl | note_nbr | 
+------+---------+----------+ 
| 1 | one  |  123 | 
| 1 | one  |  153 | 
| 2 | two  |  123 | 
| 2 | two  |  153 | 
| 3 | Threee |  123 | 
| 3 | Threee |  153 | 
+------+---------+----------+ 

은 내가 u는 내가 무슨 말을 얻을 수 있기를 바랍니다. 그래서 쿼리의 모든 데이터가 테이블 1의 id 1에 표시됩니다. 그래서 산출은

ID note_nbr 
1 123(*from table b) 
2 123(*from table c) 
관련 문제