sql pour combiner deux tables non liées en une
J'ai tables
table1
col1 col2
a b
c d
et table2
mycol1 mycol2
e f
g h
i j
k l
Je veux combiner les deux tableaux, qui n'ont pas de champ dans une table qui ressemble à:
tableau 3
col1 col2 mycol1 mycol2
a b e f
c d g h
null null i j
null null k l
ie, c'est comme mettre les deux tables côte à côte.
Je suis coincé! S'il vous plaît aider!
source d'informationauteur user4109
Vous devez vous connecter pour publier un commentaire.
Obtenir un numéro de ligne pour chaque ligne de chaque tableau, puis de faire une jointure à l'aide de ces numéros de ligne:
C'est en supposant que SQL Server >= 2005.
Option 1: Une Seule Requête
Vous ont pour joindre les deux tables, et si vous voulez que chaque ligne dans la table 1 pour correspondre à une seule ligne dans la table2, vous ont de restreindre le rejoindre en quelque sorte. Calculer les numéros de ligne dans chaque tableau et de le rejoindre sur cette colonne. Les numéros de ligne sont spécifiques aux bases de données; ici est une solution pour mysql:
Cela suppose table1 est plus que table2; si table2 est plus long, soit utiliser
RIGHT JOIN
ou changer l'ordre de la t1 et t2 sous-sélectionne. Notez également que vous pouvez spécifier l'ordre de chaque table séparément à l'aide d'unORDER BY
clause dans le sous-sélectionne.(Voir sélectionnez incrémenter compteur dans mysql)
Option 2: Post-traitement
Envisager de faire deux sélectionne, puis la concaténation des résultats avec votre langage de script favori. C'est beaucoup plus raisonnable.
Il est vraiment bon si vous mettez dans une description de la raison de ce problème doit être résolu. Je suppose que c'est juste de la pratique de la syntaxe sql?
De toute façon, puisque les lignes n'ont rien qui les relie, nous avons pour créer une connexion. J'ai choisi l'ordre de leurs valeurs. Aussi car ils n'ont rien leur connexion qui pose également la question de savoir pourquoi vous voulez les mettre les uns à côté des autres, en premier lieu.
Voici la solution complète: http://sqlfiddle.com/#!6/67e4c/1
L'sélectionnez le code ressemble à ceci: