Opzione 1: singola query
È hanno per unire le due tabelle, e se vuoi che ogni riga in table1 corrisponda a una sola riga in table2, devi avere per limitare il join così mehow. Calcola i numeri di riga in ogni tabella e unisciti a quella colonna. I numeri di riga sono specifici del database; ecco una soluzione per mysql:
SELECT
t1.col1, t1.col2, t2.mycol1, t2.mycol2
FROM
(SELECT col1, col2, @t1_row := t1_row + 1 AS rownum FROM table1, (SELECT @t1_row := 0) AS r1) AS t1
LEFT JOIN
(SELECT mycol1, mycol2, @t2_row := t2_row + 1 AS rownum FROM table2, (SELECT @t2_row := 0) AS r2) AS t2
ON t1.rownum = t2.rownum;
Ciò presuppone che la tabella1 sia più lunga di tabella2; se table2 è più lungo, utilizzare RIGHT JOIN
oppure cambiare l'ordine dei sottoselezionamenti t1 e t2. Si noti inoltre che è possibile specificare separatamente l'ordine di ciascuna tabella utilizzando una clausola ORDER BY
nei sottoselezionamenti.
(Vedi select increment counter in mysql)
Opzione 2: Post-processing
considerare la possibilità di due seleziona, e quindi concatenando i risultati con il linguaggio di scripting preferito. Questo è un approccio molto più ragionevole.
quale RDBMS? chiaramente non vuoi partecipare, ma come ti aspetti di allineare le righe. perché, per esempio, e, si va con a, b? – Randy
Di solito quando la domanda è qualcosa del genere, stai facendo qualcosa che in realtà non ha senso. Che uso hai per i tavoli side-by-side? Se lo stai facendo solo per visualizzare i dati nella tua applicazione, probabilmente c'è un modo migliore di quello che proponi. – catfood
sqlserver. Ciao, e, f non ha bisogno di andare con a, b. Le coppie di colonne nella tabella 3 sono indipendenti l'una dall'altra. – user4109