Deve esserci una chiave primaria per una relazione di chiave esterna per unire i dati tra due tabelle.
Questa è l'idea dell'algebra relazionale e della normalizzazione. In caso contrario, la correlazione dei dati non ha senso.
http://en.wikipedia.org/wiki/Database_normalization
Il CROSS JOIN ti darà tutte le possibilità. (1,4), (1,5), (1, 6) ... (3,6). Non credo sia quello che vuoi.
Puoi sempre utilizzare una funzione ROW_NUMBER() OVER() per generare una chiave surrogata in entrambe le tabelle. Ordina i dati nel modo desiderato all'interno della clausola OVER(). Tuttavia, questo non è ancora in una forma normale.
In breve. Perché farlo?
Database di test rapido. Memorizza prodotti di articoli sportivi e articoli per la casa in forma non normale.
I risultati di SELECT non significano nulla.
-- 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
Abbiamo sicuramente bisogno di maggiori informazioni dall'utente.