2 つのテーブル間でデータを結合するには、主キーと外部キーの関係が必要です。
それが関係代数と正規化についての考え方です。そうでなければ、データの相関関係は無意味です。
http://en.wikipedia.org/wiki/Database_normalization
CROSS JOIN はあらゆる可能性を提供します。 (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
ユーザーからのより多くの情報が必要です。