가있다을 사용하고 있습니다.
관계형 대수와 정규화에 대한 아이디어입니다. 그렇지 않으면 데이터의 상관 관계가 의미가 없습니다.
http://en.wikipedia.org/wiki/Database_normalization
십자가는 당신에게 모든 가능성을 줄 것이다 가입하세요. (1,4), (1,5), (1,6) ... (3,6). 나는 그것이 당신이 원하는 것이라고 생각하지 않습니다.
항상 두 테이블에 서로 게이트 키를 생성하기 위해 ROW_NUMBER() OVER() 함수를 사용할 수 있습니다. OVER() 절에서 원하는 방식으로 데이터를 정렬하십시오. 그러나 이것은 여전히 일반 형식이 아닙니다.
요컨대. 왜 그럴까요?
빠른 테스트 데이터베이스. 비 정상적인 형태의 스포츠 용품 및 가정 용품 제품을 보관합니다.
SELECT의 결과는 아무런 의미가 없습니다.
-- Just play
use tempdb;
go
-- Drop table
if object_id('abnormal_form') > 0
drop table abnormal_form
go
-- Create table
create table abnormal_form
(
Id int,
Category int,
Name varchar(50)
);
-- Load store products
insert into abnormal_form values
(1, 1, 'Bike'),
(2, 1, 'Bat'),
(3, 1, 'Ball'),
(4, 2, 'Pot'),
(5, 2, 'Pan'),
(6, 2, 'Spoon');
-- Sporting Goods
select * from abnormal_form where Category = 1
-- Home Goods
select * from abnormal_form where Category = 2
-- Does not mean anything to me
select Id1, Id2 from
(select ROW_NUMBER() OVER (ORDER BY ID) AS Rid1, Id as Id1
from abnormal_form where Category = 1) as s
join
(select ROW_NUMBER() OVER (ORDER BY ID) AS Rid2, Id as Id2
from abnormal_form where Category = 2) as h
on s.Rid1 = h.Rid2
사용자의 추가적인 정보가 필요합니다. * 당신이 절 by``주문을 사용하지 않는
SQL 결과 세트 * 본질적으로 순서가 있습니다. "첫 번째"또는 "두 번째"행에 대한 개념이 없습니다. 두 결과 집합은 어떻게 정렬됩니까? –
order by 절은 ROW_NUMBER와 같은 윈도우 함수에있을 수 있습니다. 마지막 주문에만 국한되지 않고 –