Esistono diversi modi per farlo, a seconda di cosa realmente volere. Senza colonne comuni, devi decidere se vuoi introdurre una colonna comune o ottenere il prodotto.
Supponiamo che tu abbia le due tabelle:
parts: custs:
+----+----------+ +-----+------+
| id | desc | | id | name |
+----+----------+ +-----+------+
| 1 | Sprocket | | 100 | Bob |
| 2 | Flange | | 101 | Paul |
+----+----------+ +-----+------+
Dimentica le colonne effettive poiché molto probabilmente avresti una relazione cliente/ordine/parte in questo caso; Ho appena usato quelle colonne per illustrare i modi per farlo.
Un prodotto cartesiano abbinerà ogni riga della prima tabella con ogni riga della seconda:
> select * from parts, custs;
id desc id name
-- ---- --- ----
1 Sprocket 101 Bob
1 Sprocket 102 Paul
2 Flange 101 Bob
2 Flange 102 Paul
Probabilmente non è quello che vuoi, dal momento che 1000 parti e 100 clienti risulteranno in 100.000 righe con molte informazioni duplicate.
In alternativa, puoi utilizzare un'unione solo per generare i dati, anche se non affiancati (dovrai assicurarti che i tipi di colonna siano compatibili tra le due selezioni, rendendo compatibili le colonne della tabella o costringendole nella selezione ):
> select id as pid, desc, null as cid, null as name from parts
union
select null as pid, null as desc, id as cid, name from custs;
pid desc cid name
--- ---- --- ----
101 Bob
102 Paul
1 Sprocket
2 Flange
In alcuni database, puoi utilizzare una colonna rowid/rownum o una pseudo-colonna per abbinare i record affiancati, ad esempio:
id desc id name
-- ---- --- ----
1 Sprocket 101 Bob
2 Flange 101 Bob
Il codice sarebbe qualcosa del tipo:
select a.id, a.desc, b.id, b.name
from parts a, custs b
where a.rownum = b.rownum;
È ancora come un prodotto cartesiano ma il where
La clausola limita il modo in cui le righe vengono combinate per formare i risultati (quindi non è affatto un prodotto cartesiano, in realtà).
Non ho testato quell'SQL per questo poiché è uno dei limiti del mio DBMS preferito e, giustamente, non credo che sia mai necessario in uno schema adeguatamente congegnato. Poiché SQL non garantisce l'ordine in cui produce i dati, la corrispondenza può cambiare ogni volta che esegui la query a meno che tu non abbia un specifico relazione o order by
clausola.
Penso che la cosa ideale da fare sarebbe aggiungere una colonna a entrambe le tabelle specificando qual è la relazione. Se non c'è una vera relazione, probabilmente non hai motivo di provare a metterli fianco a fianco con SQL.
Se vuoi solo che vengano visualizzati fianco a fianco in un rapporto o in una pagina web (due esempi), lo strumento giusto per farlo è qualunque cosa generi il tuo rapporto o pagina web, insieme a due indipendenti Query SQL per ottenere le due tabelle non correlate. Ad esempio, una griglia a due colonne in BIRT (o Crystal o Jasper) ciascuna con una tabella dati separata, o una tabella HTML a due colonne (o CSS) ciascuna con una tabella dati separata.