2017-11-23 8 views
-3

ここに私の問題は、私はテーブルからデータを選択しようとしましたテーブルBのデータを選択する列の入力クエリを持っているが、テーブル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

関係なしに参加することが可能であるが、私はあなたが、Bが存在する場合のみ、1は(例えば)

ドロップテーブルに参加することを期待してどのように表示されていません、c、d;

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が私の言うことを願っています。したがって、クエリ内のすべてのデータがテーブルaのid 1に表示されます。出力は

ID note_nbr 
1 123(*from table b) 
2 123(*from table c) 
関連する問題