?
Solved

multi-part identifier "..." could not be bound.

Posted on 2008-06-13
14
Medium Priority
?
737 Views
Last Modified: 2013-11-05
Greetings,

I have a query that was running just fine until I added an additional field.  This query is part of a stored procedure that has four temp tables.  You can safely assume that all temp tables have been filled and the last query that ran fine looked like this:

               SELECT
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_A, Field_B, Field_C FROM #TableResults1 FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Field_L, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM  #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      

I decided I needed to take the results of the query above and add it to a new temp table (for reasons out of the scope of this question) along with 'Field_A' which is already in the query above.  Hence, the new temp table and query looks like this:


CREATE TABLE #TableResults4 (Field_A VARCHAR(512), Field_Z text)  // Field_Z is the entire results of the query above

INSERT INTO #TableResults4  -- ******* ERROR *******
      SELECT (SELECT Field_A FROM #Table1Results4 X),
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_A, Field_B, Field_C FROM #TableResults1 Y FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Field_L, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM  #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      WHERE X.Field_A  = Y.Field_A

You can see how I tried to bind the two fields but was not successful.  Here are the errors for the line marked with stars above:

Msg 4104, Level 16, State 1, Procedure SP_MY_PROCEDURE, Line 73
The multi-part identifier "X.Field_A" could not be bound.
Msg 4104, Level 16, State 1, Procedure SP_MY_PROCEDURE, Line 73
The multi-part identifier "Y.Field_A" could not be bound.
0
Comment
Question by:John500
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 4
14 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 21780948
what about this:
INSERT INTO #TableResults4  -- ******* ERROR *******
      SELECT x.Field_A 
      FROM #Table1Results4 X
      JOIN ( SELECT 
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' + 
      ISNULL((SELECT Field_A, Field_B, Field_C FROM #TableResults1 Y FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Field_L, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') + 
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM  #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      ) Y
      ON X.Field_A  = Y.Field_A

Open in new window

0
 
LVL 17

Expert Comment

by:Daniel Reynolds
ID: 21780981
You are trying to address inner-scope tables in the outer scope of your query. There is no reference available in the outer scope.

0
 

Author Comment

by:John500
ID: 21781060
I forgot to mention that the Field_A comes out of TableResults1.

Thus, do you still think I should use #TableResults4 X rather than:

INSERT INTO #TableResults4  -- ******* ERROR *******
      SELECT x.Field_A
      FROM #Table1Results1 X
      ....
0
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

 

Author Comment

by:John500
ID: 21781110
Right now I get the errors below when using the following:



INSERT INTO #TableResults4  -- ******* ERROR *******
      SELECT X.Field_A
      FROM #TableResults1 X
      JOIN ( SELECT
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_A, Field_B, Field_C FROM #TableResults1 Y FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Field_L, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM  #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      ) Y
      ON X.Field_A  = Y.Field_A


Msg 8155, Level 16, State 2, Procedure SP_MY_PROCEDURE, Line 73
No column was specified for column 1 of 'Y'.
Msg 207, Level 16, State 1, Procedure SP_MY_PROCEDURE, Line 83
Invalid column name 'Field_A'.
Msg 213, Level 16, State 1, Procedure SP_MY_PROCEDURE, Line 83
Insert Error: Column name or number of supplied values does not match table definition.
0
 

Author Comment

by:John500
ID: 21781157
The outer scope tables in this case would be #TableResults1 and the results of Y  - yes/no ?
0
 
LVL 17

Expert Comment

by:Daniel Reynolds
ID: 21781295
X is in an outer scope and Y is inner-scope (a select within a select)
0
 

Author Comment

by:John500
ID: 21781378
Any suggestions?
0
 
LVL 17

Expert Comment

by:Daniel Reynolds
ID: 21781554
Sorry, I see you now have aliased your inner select as Y. So both are now in the outer scope or context. The one thing you have not done is name your column in Y as Field_A. and I am not sure with all of your xml in there that you can reliably do that.
0
 

Author Comment

by:John500
ID: 21781795
I made a mistake on the table I should be referening.  It's actually #TableResults2

Notice the changes on both lines with the stars and tell me if this is what you were talking about.  

Thanks

INSERT INTO #TableResults4  
      SELECT X.Field_A
      FROM #TableResults2 X    -- *******************************
      JOIN ( SELECT
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_B, Field_C, Field_D FROM #TableResults1 Y FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Y.Field_A, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +   -- ************************************************
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM  #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      ) Y
      ON X.Field_A  = Y.Field_A
0
 

Author Comment

by:John500
ID: 21781924
I had 'Y' in there where it wasn't supposed to be after #TableResults1 (but didn't mean to put it there.....)

INSERT INTO #TableResults4  
      SELECT X.Field_A
      FROM #TableResults2 X    -- *******************************
      JOIN ( SELECT
      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_B, Field_C, Field_D FROM    #TableResults1 FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Y.Field_A, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +   -- ************************************************
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM     #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
      ) Y
      ON X.Field_A  = Y.Field_A
0
 
LVL 17

Expert Comment

by:Daniel Reynolds
ID: 21782032

remove the Y. from below line and try it
ISNULL((SELECT Y.Field_A, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT
0
 

Author Comment

by:John500
ID: 21782524
This ended up being the ticket:


SELECT
      (SELECT TOP 1 [Name] FROM #RangeInfo),
      (SELECT

      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_B, Field_C, Field_D FROM    #TableResults1 FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Y.Field_A, Field_M, Field_N FROM #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +  
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM     #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>'
0
 

Author Comment

by:John500
ID: 21782532
Bad, paste - this was the ticket:

SELECT
      (SELECT TOP 1 [Name] FROM #RangeInfo),
      (SELECT

      '<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="http://....xsl"?><Range>' +
      ISNULL((SELECT Field_B, Field_C, Field_D FROM    #TableResults1 FOR XML RAW ('Info'), ROOT ('Info1'), ELEMENTS), '') +
      ISNULL((SELECT Field_A, Field_M, Field_N FROM    #TableResults2 FOR XML RAW ('Info'), ROOT ('Info2')), '') +  
      ISNULL((SELECT Field_X, Field_Y, Field_Z FROM     #TableResults3 FOR XML RAW ('Info'), ROOT ('Info3')), '') +
      '</Range>')

0
 

Accepted Solution

by:
John500 earned 0 total points
ID: 21782548
Let's try that again:


SELECT
      (SELECT TOP 1 Field_A FROM #TableResults1),
      (SELECT
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Data architecture is an important aspect in Software as a Service (SaaS) delivery model. This article is a study on the database of a single-tenant application that could be extended to support multiple tenants. The application is web-based develope…
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question