Chunks je le code suivant dans SQL:SQL Déplacer vue sur gérables
SELECT
(SELECT Form_Title
FROM Forms
WHERE Form_ID = (SELECT TOP 1 Form_ID
FROM [Form_Responses]
WHERE [Form_Response_ID] = [Form_Response_ID])) AS Form_Name
FROM
[FooDb].[dbo].[Submissions]
Essentiellement, je suis la sélection des données trois tables « loin » et l'imbrication de toutes ces sélections. Je sélectionne donc un champ d'une table et l'utilise pour faire une sélection dans une autre.
Je ne peux pas utiliser de vars dans une vue, alors comment est-ce que je peux le rendre lisible à distance?
Edition - le pseudocode ci-dessous est ce que je visais avec le SQL ci-dessus et il fonctionne, mais je ne sais pas comment faire propre, et c'est la question:
//Form_Response_ID exists on Submissions
SELECT Get_Query_Result(Form_Response_ID) as Form_Name
FROM Submissions
Get_Query_Result(Form_Response_ID)() {
return SELECT Form_Title FROM Forms WHERE Form_ID = Get_Form_Id(Form_Response_ID);
}
// Form_Responses has Form_Response_ID as well
Get_Form_Id(Form_Response_ID) {
return SELECT TOP 1 Form_ID FROM [Form_Responses] WHERE [Form_Response_ID] = Form_Response_ID
}
Il est extrêmement difficile de comprendre ce que vous essayez de faire avec ce seul code SQL. S'il vous plaît partager quelques exemples de données et vos résultats souhaités. – JNevill
@JNevill Mon code fonctionne - mon problème est exactement ce que vous avez décrit - personne ne peut comprendre ce que je viens d'écrire. Fondamentalement, il existe trois instructions SELECT imbriquées. Je veux un moyen de le décomposer en variables. Les fonctions me viennent à l'esprit, je suppose. Cela doit être dans une vue - je ne peux pas utiliser des vars. Je demande comment le rendre plus lisible. – VSO
Vous avez WHERE [Form_Response_ID] = [Form_Response_ID] dans votre sous-requête, c'est comme 1 = 1, donc vous voulez sélectionner toute la ligne de [Form_Responses]? – scaisEdge