2017-11-14 2 views
-1

모든 테이블의 구조는 동일한 열 이름입니다.Access Database의 모든 테이블에서 동일한 쿼리를 실행하는 방법은 무엇입니까?

UPDATE Table1 INNER JOIN TableX ON Table1.Column1= TableX.Column1 SET Table1.Column2 = TableX.Column2

하지만 모든 테이블에이 코드를 실행하고 싶습니다 : 여기

는 코드 표 2, 표 3, 표 4는 .... Table30

+0

귀하의 요구 사항은 명확하지이며, 원하는 출력을 제공하시기 바랍니다. 아마도 귀하의 질문이 효과가없는 이유를 설명해주십시오. – Stephen

+0

성취하려는 것을 설명 할 수 있습니까? –

+0

예를 들어 50 개의 테이블이 있습니다. 각 테이블에는 모든 값을 표시하려는 ColumnName_X라는 동일한 열 이름이 있습니다. –

답변

0

내가 잘 이해한다면, 그건 그것은

SELECT AllTables.* 
FROM AllTables 
WHERE AllTables.ColumnName_X = AllTables.ColumnName_Y 
0

는 아마도 생각 ... 당신을 위해 작동 UNION ALL

SELECT ColumnName_X 
FROM table1 
WHERE ..... 
UNION ALL 
SELECT ColumnName_X 
FROM table2 
WHERE ..... 

귀하의 요구 사항이 명확하지 않습니다.

+0

SELECT Column1 FROM UNION ALL (표 1, 표 2, 표 3, 표 4) WHERE Column1 = Column2이 문제에 대한 해결책이 있습니까? –

+0

@DemenyiNorbert는 불가능합니다. 내가 설명한대로 최선을 다하는거야. – Stephen

+0

@DemenyiNorbert 어디에서 오는'Column2'는 무엇입니까? 같은 테이블? – Stephen

-1

는 테이블리스트 및 특정 열 (COLUMNX)를 포함하는 스키마를 얻기 위해 다음의 쿼리를 사용

SELECT 
    sys.columns.name AS ColumnName, 
    sys.tables.name AS TableName, 
    schema_name (sys.tables.schema_Id) as schemaName 
FROM 
    sys.columns 
JOIN sys.tables ON 
    sys.columns.object_id = sys.tables.object_id 
WHERE 
    sys.columns.name = 'ColumnName' 
    --and schema_name (sys.tables.schema_Id) = 'schemaName' 

출력 (COLUMNX 경우 ID)

ColumnName TableName schemaName 
ID   MusicApp dbo 
id   employ  dbo 

는 ID 값을 얻을 #temptable에 출력 된 위의 쿼리를 저장하고 루프를 사용하여 동적으로 가져올 수 있습니다.

declare @tablename varchar(max)= '' 
declare @count int = 1 
declare @tablecount int= (select count(*) from #temptable) 
while(@count <= @tablecount) 
begin 
set @tablename = (select tablename from #temptable where seqid = @count) 
exec ('select id from '[email protected]+' ') 
set @count = @count + 1 
end 

희망이 당신을 도울 것입니다 :)

+0

다음과 같이하고 싶습니다. \t SELECT UNLINE ALL (테이블 1, 테이블 2, 테이블 3, 테이블 4) WHERE Column1 = Column2 또는 SELECT Column1 FROM sys.tables WHERE Column1 = Column2 –

+0

사용자가 Access SQL 서버. –

0

대부분의 대답은 SQL 서버를 가정합니다.이 태그는이 질문의 일부가 아니며 작동하지 않습니다. 당신의 테이블이 table30에 표라는 이름의 경우

,이 작동합니다 :

Dim strSQL  As String 
Dim i   As Integer 
Dim strTable  As String 

For i = 1 To 10 
    strTable = "Table" & i 
    strSQL = "update " & strTable & _ 
      " inner join TableX on " & strTable & ".column1 = TableX.Column1" & _ 
      " SET " & strTable & ".Column2 = TaxbleX.Column2" 
Debug.Print strSQL 

CurrentDb.Execute strSQL 

Next i