Skip to main content

AccessTr.neT


Union Sorgusu İle Tablo Oluşturmak

Union Sorgusu İle Tablo Oluşturmak

Çözüldü #1
iyi günler
bir ara tablo alanlarını döngü içinde kullanmak ile ilgili bir konu açmıştım
orada şu döngü ile
Public Sub sqls(lastTableName As String, newTableName As String, criteriaFieldName As String)
    Dim i As Integer
    Dim sql, strSQL As String
    Dim lastColumnName, newColumnName As String
    Dim name1, name2 As String
   
    strSQL = ""

    For i = 0 To CurrentDb.TableDefs(lastTableName).Fields.Count - 1
   
        lastColumnName = CurrentDb.TableDefs(lastTableName).Fields(i).Name
        newColumnName = CurrentDb.TableDefs(newTableName).Fields(i).Name
 
        Sql = "SELECT" & _
        " [" & lastTableName & "].[" & criteriaFieldName & "]" & "," & _
        " '" & lastColumnName & "' AS AlanAdi" & "," & _
        " [" & lastTableName & "].[" & lastColumnName & "]" & "," & _
        " [" & newTableName & "].[" & newColumnName & "]" & _
        " FROM [" & lastTableName & "]" & _
        " INNER JOIN [" & newTableName & "] ON [" & lastTableName & "].[" & criteriaFieldName & "] = [" & newTableName & "].[" & criteriaFieldName & "]" & _
        " WHERE [" & lastTableName & "].[" & lastColumnName & "]<>[" & newTableName & "].[" & newColumnName & "]"

        strSQL = strSQL & sql
       
        If (i < CurrentDb.TableDefs(lastTableName).Fields.Count - 1) Then
            strSQL = strSQL & " UNION ALL "
        Else
            strSQL = strSQL & ";"
        End If
       
    Next i

    Me.Liste0.RowSource = strSQL
    Me.Liste0.Requery
   
   
End Sub
aşağıdaki Sql cümlesini oluşturup iki tablo arasında değişenleri listeye alıyordum
SELECT [EGITmMX].[SICNO], 'ESCY34' AS AlanAdi, [EGITmMX].[ESCY34], [EGITmM].[ESCY34] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[ESCY34]<>[EGITmM].[ESCY34] UNION ALL SELECT [EGITmMX].[SICNO], 'MASYER' AS AlanAdi, [EGITmMX].[MASYER], [EGITmM].[MASYER] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MASYER]<>[EGITmM].[MASYER] UNION ALL SELECT [EGITmMX].[SICNO], 'GRVADI' AS AlanAdi, [EGITmMX].[GRVADI], [EGITmM].[GRVADI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GRVADI]<>[EGITmM].[GRVADI] UNION ALL SELECT [EGITmMX].[SICNO], 'GORADI' AS AlanAdi, [EGITmMX].[GORADI], [EGITmM].[GORADI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GORADI]<>[EGITmM].[GORADI] UNION ALL SELECT [EGITmMX].[SICNO], 'SICNO' AS AlanAdi, [EGITmMX].[SICNO], [EGITmM].[SICNO] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[SICNO]<>[EGITmM].[SICNO] UNION ALL SELECT [EGITmMX].[SICNO], 'ESCY06' AS AlanAdi, [EGITmMX].[ESCY06], [EGITmM].[ESCY06] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[ESCY06]<>[EGITmM].[ESCY06] UNION ALL SELECT [EGITmMX].[SICNO], 'MASCIN' AS AlanAdi, [EGITmMX].[MASCIN], [EGITmM].[MASCIN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MASCIN]<>[EGITmM].[MASCIN] UNION ALL SELECT [EGITmMX].[SICNO], 'PERAD' AS AlanAdi, [EGITmMX].[PERAD], [EGITmM].[PERAD] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[PERAD]<>[EGITmM].[PERAD] UNION ALL SELECT [EGITmMX].[SICNO], 'PERSOY' AS AlanAdi, [EGITmMX].[PERSOY], [EGITmM].[PERSOY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[PERSOY]<>[EGITmM].[PERSOY] UNION ALL SELECT [EGITmMX].[SICNO], 'CTEL' AS AlanAdi, [EGITmMX].[CTEL], [EGITmM].[CTEL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[CTEL]<>[EGITmM].[CTEL] UNION ALL SELECT [EGITmMX].[SICNO], 'KE' AS AlanAdi, [EGITmMX].[KE], [EGITmM].[KE] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[KE]<>[EGITmM].[KE] UNION ALL SELECT [EGITmMX].[SICNO], 'VATNO' AS AlanAdi, [EGITmMX].[VATNO], [EGITmM].[VATNO] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[VATNO]<>[EGITmM].[VATNO] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGGUN' AS AlanAdi, [EGITmMX].[DOGGUN], [EGITmM].[DOGGUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGGUN]<>[EGITmM].[DOGGUN] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGAY' AS AlanAdi, [EGITmMX].[DOGAY], [EGITmM].[DOGAY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGAY]<>[EGITmM].[DOGAY] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGYIL' AS AlanAdi, [EGITmMX].[DOGYIL], [EGITmM].[DOGYIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGYIL]<>[EGITmM].[DOGYIL] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRGUN' AS AlanAdi, [EGITmMX].[GIRGUN], [EGITmM].[GIRGUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRGUN]<>[EGITmM].[GIRGUN] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRAY' AS AlanAdi, [EGITmMX].[GIRAY], [EGITmM].[GIRAY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRAY]<>[EGITmM].[GIRAY] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRYIL' AS AlanAdi, [EGITmMX].[GIRYIL], [EGITmM].[GIRYIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRYIL]<>[EGITmM].[GIRYIL] UNION ALL SELECT [EGITmMX].[SICNO], 'TAHSIL' AS AlanAdi, [EGITmMX].[TAHSIL], [EGITmM].[TAHSIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[TAHSIL]<>[EGITmM].[TAHSIL] UNION ALL SELECT [EGITmMX].[SICNO], 'MEZUN' AS AlanAdi, [EGITmMX].[MEZUN], [EGITmM].[MEZUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MEZUN]<>[EGITmM].[MEZUN] UNION ALL SELECT [EGITmMX].[SICNO], 'KURS3' AS AlanAdi, [EGITmMX].[KURS3], [EGITmM].[KURS3] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[KURS3]<>[EGITmM].[KURS3] UNION ALL SELECT [EGITmMX].[SICNO], 'EMEKLI' AS AlanAdi, [EGITmMX].[EMEKLI], [EGITmM].[EMEKLI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[EMEKLI]<>[EGITmM].[EMEKLI];
şimdi bu Sql cümlesini "degisenler" sorgusu olarak kaydettim bu sorguyu kullanarak şu Sql cümlesi ilede tablo yapıyorum
SELECT degisenler.* INTO tDegisenler FROM degisenler;
bu işlemler sonucunda bir "tDegisenler" tablosu oluşturuluyor

soruya gelecek olursak ben döngü içerisinden aldığım Sql cümlesi ile 
SELECT degisenler.* INTO tDegisenler FROM degisenler;
cümlesini birleştirmek istiyorum. böylece tek seferde iki tablo arasındaki değişen alanları bir tabloya alacağım
"FROM degisenler" cümlesindeki degisenler yerine uzun union Sql cümlesini nasıl ekleyeceğiz
@benbendedeilem
Son Düzenleme: 15/05/2020, 14:18, Düzenleyen: accessman.
Cevapla
#2
ilk seferinde tablo oluşturulacak ama aslında devamlı kullanılacak olan Sql cümlesi ekleme sorgu cümlesi olacak yani şu Sql cümlesi
INSERT INTO tDegisenler ( SICNO, AlanAdi, EGITmMX_ESCY34, EGITmM_ESCY34 )
SELECT degisenler.SICNO, degisenler.AlanAdi, degisenler.EGITmMX.ESCY34, degisenler.EGITmM.ESCY34
FROM degisenler;
@benbendedeilem
Cevapla
#3
SELECT degisenler.* INTO tDegisenler FROM (SELECT [EGITmMX].[SICNO], 'ESCY34' AS AlanAdi, [EGITmMX].[ESCY34], [EGITmM].[ESCY34] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[ESCY34]<>[EGITmM].[ESCY34] UNION ALL SELECT [EGITmMX].[SICNO], 'MASYER' AS AlanAdi, [EGITmMX].[MASYER], [EGITmM].[MASYER] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MASYER]<>[EGITmM].[MASYER] UNION ALL SELECT [EGITmMX].[SICNO], 'GRVADI' AS AlanAdi, [EGITmMX].[GRVADI], [EGITmM].[GRVADI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GRVADI]<>[EGITmM].[GRVADI] UNION ALL SELECT [EGITmMX].[SICNO], 'GORADI' AS AlanAdi, [EGITmMX].[GORADI], [EGITmM].[GORADI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GORADI]<>[EGITmM].[GORADI] UNION ALL SELECT [EGITmMX].[SICNO], 'SICNO' AS AlanAdi, [EGITmMX].[SICNO], [EGITmM].[SICNO] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[SICNO]<>[EGITmM].[SICNO] UNION ALL SELECT [EGITmMX].[SICNO], 'ESCY06' AS AlanAdi, [EGITmMX].[ESCY06], [EGITmM].[ESCY06] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[ESCY06]<>[EGITmM].[ESCY06] UNION ALL SELECT [EGITmMX].[SICNO], 'MASCIN' AS AlanAdi, [EGITmMX].[MASCIN], [EGITmM].[MASCIN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MASCIN]<>[EGITmM].[MASCIN] UNION ALL SELECT [EGITmMX].[SICNO], 'PERAD' AS AlanAdi, [EGITmMX].[PERAD], [EGITmM].[PERAD] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[PERAD]<>[EGITmM].[PERAD] UNION ALL SELECT [EGITmMX].[SICNO], 'PERSOY' AS AlanAdi, [EGITmMX].[PERSOY], [EGITmM].[PERSOY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[PERSOY]<>[EGITmM].[PERSOY] UNION ALL SELECT [EGITmMX].[SICNO], 'CTEL' AS AlanAdi, [EGITmMX].[CTEL], [EGITmM].[CTEL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[CTEL]<>[EGITmM].[CTEL] UNION ALL SELECT [EGITmMX].[SICNO], 'KE' AS AlanAdi, [EGITmMX].[KE], [EGITmM].[KE] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[KE]<>[EGITmM].[KE] UNION ALL SELECT [EGITmMX].[SICNO], 'VATNO' AS AlanAdi, [EGITmMX].[VATNO], [EGITmM].[VATNO] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[VATNO]<>[EGITmM].[VATNO] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGGUN' AS AlanAdi, [EGITmMX].[DOGGUN], [EGITmM].[DOGGUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGGUN]<>[EGITmM].[DOGGUN] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGAY' AS AlanAdi, [EGITmMX].[DOGAY], [EGITmM].[DOGAY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGAY]<>[EGITmM].[DOGAY] UNION ALL SELECT [EGITmMX].[SICNO], 'DOGYIL' AS AlanAdi, [EGITmMX].[DOGYIL], [EGITmM].[DOGYIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[DOGYIL]<>[EGITmM].[DOGYIL] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRGUN' AS AlanAdi, [EGITmMX].[GIRGUN], [EGITmM].[GIRGUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRGUN]<>[EGITmM].[GIRGUN] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRAY' AS AlanAdi, [EGITmMX].[GIRAY], [EGITmM].[GIRAY] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRAY]<>[EGITmM].[GIRAY] UNION ALL SELECT [EGITmMX].[SICNO], 'GIRYIL' AS AlanAdi, [EGITmMX].[GIRYIL], [EGITmM].[GIRYIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[GIRYIL]<>[EGITmM].[GIRYIL] UNION ALL SELECT [EGITmMX].[SICNO], 'TAHSIL' AS AlanAdi, [EGITmMX].[TAHSIL], [EGITmM].[TAHSIL] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[TAHSIL]<>[EGITmM].[TAHSIL] UNION ALL SELECT [EGITmMX].[SICNO], 'MEZUN' AS AlanAdi, [EGITmMX].[MEZUN], [EGITmM].[MEZUN] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[MEZUN]<>[EGITmM].[MEZUN] UNION ALL SELECT [EGITmMX].[SICNO], 'KURS3' AS AlanAdi, [EGITmMX].[KURS3], [EGITmM].[KURS3] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[KURS3]<>[EGITmM].[KURS3] UNION ALL SELECT [EGITmMX].[SICNO], 'EMEKLI' AS AlanAdi, [EGITmMX].[EMEKLI], [EGITmM].[EMEKLI] FROM [EGITmMX] INNER JOIN [EGITmM] ON [EGITmMX].[SICNO] = [EGITmM].[SICNO] WHERE [EGITmMX].[EMEKLI]<>[EGITmM].[EMEKLI])  AS degisenler;
Cevapla
#4

strSQL = Replace(strSQL, ";", "")
strSQL = "SELECT degisenler1.* INTO tDegisenler FROM ('" & strSQL & "')  AS degisenler1;"
   
DoCmd.RunSQL strSQL  <--- burada hata veriyor
[Resim: do.php?img=10207]
@benbendedeilem
Son Düzenleme: 15/05/2020, 15:12, Düzenleyen: accessman.
Cevapla
#5
strSQL = "SELECT degisenler1.* INTO tDegisenler FROM (" & strSQL & ")  AS degisenler1"
fazladan tırnak işareti koymuşum

teşekkürler sn. @ozanakkaya

INSERT INTO tDegisenler ( SICNO, AlanAdi, EGITmMX_ESCY34, EGITmM_ESCY34 )
SELECT degisenler.SICNO, degisenler.AlanAdi, degisenler.EGITmMX.ESCY34, degisenler.EGITmM.ESCY34
FROM degisenler;
bu kodun içine nasıl yerleştireceğiz
@benbendedeilem
Son Düzenleme: 15/05/2020, 15:57, Düzenleyen: accessman.
Cevapla
#6
strSQL = "INSERT INTO tDegisenler ( SICNO, AlanAdi, EGITmMX_ESCY34, EGITmM_ESCY34 )" & _
    " SELECT degisenler.SICNO, degisenler.AlanAdi, degisenler.EGITmMX.ESCY34, degisenler.EGITmM.ESCY34" & _
    " FROM (" & strSQL & ")  AS degisenler"
şeklinde imiş
@benbendedeilem
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da