必须有一个主键到外键关系到两个表之间的 JOIN 数据。
这就是关系代数和规范化的想法。否则,数据的相关性是没有意义的。
http://en.wikipedia.org/wiki/Database_normalization
CROSS JOIN 将为您提供所有可能性。 (1,4), (1,5), (1, 6) ... (3,6)。我不认为那是你想要的。
您始终可以使用 ROW_NUMBER() OVER () 函数在两个表中生成代理键。在 OVER () 子句中按照您想要的方式对数据进行排序。但是,这仍然不是任何 Normal 形式。
简而言之。为什么要这样做?
快速测试数据库。使用非正常形式存储来自体育用品和家居用品的产品。
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
我们肯定需要用户提供更多信息。