2009-02-02 8 views
0

Je dois créer une procédure stockée qui extrait des données de plusieurs tables qui ne sont pas liées. Que puis-je faire? les tables qui ne sont pas liées et tout ce que je dois faire est de tirer toutes les données de toutes ces tables.Comment créer une procédure stockée qui extrait des données de plusieurs tables non liées Que dois-je faire

AIDE S'IL VOUS PLAÎT MA VIE en dépend

+1

Cela a fait ma matinée, merci. –

+2

Ne vous attendez pas à ce qu'il marque quoi que ce soit comme réponse parce qu'il est probablement déjà mort. – DarkwingDuck

Répondre

2

Il suffit de faire plusieurs selects?

select * from MyTable1; 
select * from MyTable2; 
select * from MyTable3; 

Vous pouvez ensuite accéder à chacune de ces tables à partir de votre indicatif. J'inclurais un exemple sur la façon de faire cela, mais vous n'incluez pas de détails sur la langue à partir de laquelle vous appelez. Détails que j'aurais inclus si ma vie en dépendait :)

Si vous voulez dire avoir des rangées dans plusieurs tables, et vous voulez les tirer tous en arrière alors vous pouvez le faire en faisant UNION.

0

Que voulez-vous dire par «non lié»? Sont-ils sur la même instance de serveur sql? Si c'est le cas, sélectionnez simplement le nom complet du schéma.

Par exemple.

Select * from database1.dbo.table Select * from database2.dbo.table

0

Si vous voulez un jeu de résultats, vous pouvez utiliser le mot-clé JOIN si oui ou non les tables ont des relations clés étrangères définies; spécifiez simplement les colonnes sur lesquelles vous souhaitez joindre les tables.

Vous pouvez également utiliser plusieurs jeux de résultats et avoir plusieurs instructions SELECT.

0

Vos questions n'est pas clair, mais si vous essayez de tirer juste certaines choses de certaines tables, puis les retourner à l'utilisateur, peut faire quelque chose comme ceci:

CREATE PROCEDURE spMyTestProc 
AS 

     DECLARE @F1 int 
     DECLARE @F2 int 
     DECLARE @F3 int 
     DECLARE @f4 char(10) 

     SELECT @f1 = FIELD1 from MYTABLE1 

     SELECT @F2 = FIELD2 FROM MYTABLE2 

     SELECT @F3 = FIELD3, @F4=FIELD4 FROM MYTABLE3 


    /* NOW return the result set to the user, it'll come back just like a regular select */  
     SELECT @F1 AS F1, @F2 AS F2, @F3 AS F3, @F4=F4 
0

La présence ou l'absence de primaire ou les clés étrangères ne vous empêche pas de rejoindre les tables. (Cela ne sera pas particulièrement rapide, mais vous pouvez le faire.) Les bases de données séparées ne le sont pas non plus.

Vous dites que vos bases de données ne sont pas liées. À partir de là, je dois déduire que la base de données dans laquelle vous écrivez la procédure stockée n'a probablement pas accès à la deuxième base de données; Si c'est le cas, vous ne pourrez pas y accéder de toute façon. Vous devez ajouter un lien à la 2ème base de données à l'aide d'Enterprise Manager.

Une fois que vous avez fait cela, vous pouvez référencer les tables dans la base de données 2 en utilisant son nom de schéma ci-dessous:

SELECT * 
FROM foo.employees 

où foo est le nom du schéma.

Bonne chance.

0
SELECT Field1, Field2, Field3 FROM Table1 
UNION ALL 
SELECT F1, F2, F3 FROM Table2 
UNION ALL 
SELECT Fld1, Fld2, Fld3 FROM Table3; 

Ceci va extraire toutes les données des trois tables en une seule sortie. Vérifiez que les autres champs de la table correspondent au type de la première table et que vous êtes prêt à partir.

Questions connexes