아래의 SQL에는 일부 DDL과 간단한 쿼리가 포함되어 있습니다.SQL에서 많은 결과 제한 -
내가 얻고 그 결과는
a1|b1|c1
a1|b2|c3
a3|b3|c2
a3|b3|c3
a3|b3|c4
a3|b3|c5
a3|b5|c6
a3|b5|c7
내가 원하는 결과는 내가 MAX, MIN, rownums 무엇을하지를 사용하여 시도
a1 |b1 |c1
a1 |b2 |c3
a3 |b3 |c2
null |null |c4
null |null |c5
a3 |b5 |c6
null |null |c7
입니다. 나는 지혜롭게 끝나고있다. 필자는 시작된 기본 쿼리 만 포함하고 있으며, 전혀 작동하지 않기 때문에 시도한 모든 옵션이 아닙니다. 어떤 도움을 주셔서 감사합니다!
BEGIN TRANSACTION;
drop table if exists table_A;
drop table if exists table_B;
drop table if exists table_C;
/* Create a table called NAMES */
CREATE TABLE table_A(a_Id text PRIMARY KEY, val_a text);
CREATE TABLE table_B(a_Id text, b_Id text, val_b text);
CREATE TABLE table_C(b_Id text, c_Id text, val_c text);
/* Create few records in this table */
INSERT INTO table_A VALUES('a1','va1');
INSERT INTO table_A VALUES('a2','va2');
INSERT INTO table_A VALUES('a3','va3');
INSERT INTO table_B VALUES('a1', 'b1','vb1');
INSERT INTO table_B VALUES('a1', 'b2','vb2');
INSERT INTO table_B VALUES('a3', 'b3','vb31');
INSERT INTO table_B VALUES('a2', 'b4','vb4');
INSERT INTO table_B VALUES('a3', 'b5','vb31');
INSERT INTO table_C VALUES('b1', 'c1','vc1');
INSERT INTO table_C VALUES('b3', 'c2','vc2');
INSERT INTO table_C VALUES('b3', 'c3','vc3');
INSERT INTO table_C VALUES('b2', 'c3','vc3');
INSERT INTO table_C VALUES('b3', 'c4','vc2');
INSERT INTO table_C VALUES('b3', 'c5','vc3');
INSERT INTO table_C VALUES('b5', 'c6','vc3');
INSERT INTO table_C VALUES('b5', 'c7','vc3');
COMMIT;
select
a.a_Id, b.b_Id, c.c_Id
from
table_A as a
join
table_B as b
on a.a_Id = b.a_Id
join
table_C as c
on b.b_Id = c.b_Id;
샘플 당신은 매우 일반적이어서, 당신이 무엇을하고 있는지 말하기가 조금 어렵습니다. 성취 할 것.찾고있는 결과 세트가 있으면 조인이 작동하지 않는다고 말할 수 있습니다. 예를 들어 값 "c4"로 "table_C"를 가져옵니다. table_B에 참여하면 c의 b_id 열의 값이 b의 레코드와 일치하고 b의 레코드가 테이블 a의 값과 일치합니다. 따라서 where 절이 없으면 간단한 조인으로는 얻을 수 없다는 것을 제외하십시오. 이것이 많은 도움이되는지 확신 할 수 없지만 최종 목표가 무엇인지 판단하기가 어렵습니다. – AndrewK
"oracle"이라는 질문에 태그를 추가했지만 게시 한 스크립트가 유효한 Oracle 구문이 아닙니다. 질문에 올바르게 태그를 추가 했습니까? –
흠 .. 이런 식으로 보냅시다. 내 쿼리가 터플 자체 (key, value)를 던질 수 있습니다. 결과 집합에 값이 아직 선택되지 않은 튜플 만 포함되도록하고 싶습니다. 그래서 (k1, v1), (k2, v1), (k3, v2), (k4, v1)을 가질 수 있습니다. 내 쿼리에서 (k1, v1), (k2, null), (k3, v2), (k4, null) OR (k1, null), (k2, v1), (k3, v2) k4, null) 등등. 희망을 명확히 밝힙니다. – Neo