[SORGU] Duplicate kayıtların bir alanını minimum değerine update etmek
#1
Merhaba,
Bir firmanın Excel'de tuttuğu kayıtları Access'e aktarırken bir zorluk yaşadım.
Veritabanını normalize etmek için tablolara bölerken bir ana tablo ve bir alt tablosunu yarattım.
Firmalar'ın altında Şubeler olacak. Firmalar'daki tüm kayıtları Şubeler tablosuna kopyaladım.

Şu anda şubeler tablosundaki durum şu:
Şube_ID (anahtar alan, otomatik artan)
Firma_ID (firma tablosuna bağlantı için, mükerrer, foreign key)
Şube_Adı (mükerrer, firma tablosundaki firma adıyla aynı)

Şimdi yapmak istediğim şu: Şube tablosunda Şube_Adı alanındaki mükerrer (duplicate) kayıtları bulup, bunların Firma_ID alanlarını her bir şube için en küçük Firma_ID değerine eşitlemek.
Örneğin,

Şube_Adı [/link] Firma_ID
---------- -----------
Acme Inc. 11
Acme Inc. 15
Acme Inc. 19

Ben tüm Acme Inc. adlı şubelerin Firma_ID değerlerinin, o alandaki en küçük değer olan 11'e eşit olmasını istiyorum. Şube Adına göre duplicate kayıtları listeleyebiliyorum ama Firma_ID alanını min değere update edemiyorum. Nasıl bir sorgu yazmam lazım?


Teşekkürler,
Yüksel




  Alıntı
Bu mesajı beğenenler:
#2
UPDATE Şube SET Şube.Firma_ID = DMin("[Firma_ID]","Şube","[Şube_Adı]='" & [Şube_Adı] & "'")
SQL'ni kullanabilirsiniz.



  Alıntı
Bu mesajı beğenenler:
#3
Çok teşekkürler. İşe yaradı.
Yalnız nedense şube adında apostrof (') işareti olan kayıtlarda çalışmadı.
"Type changing failure" verdi. Neyse, onları da elle hallederim.
Tekrar teşekkürler.



  Alıntı
Bu mesajı beğenenler:
#4
Şube_Adı alani karakter ise kesme isareti ile sinirlamali, numerik alan ise bu karakteri kaldirilmali veya tarih tipini # ile sinirlamali



  Alıntı
Bu mesajı beğenenler:
#5
Zahmet olmazsa bir devam sorum olacak.
Şimdi de ana tablodan, yavru tabloda karşılığı olmayan kayıtları silmek istiyorum.

Sizin verdiğiniz SQL örneğinden yola çıkıp şöyle bir sorgu yapmaya çalıştım ama "unknown" hatası verip çalışmıyor:

DELETE t_firma.firma_id
FROM t_firma
WHERE (([t_firma].[firma_id])>DMin("[firma_id]","t_firma","[Marka]='" & [Marka] & "'"));

Gerçi yavru tabloda karşılığı olmayan kayıtları silmenin daha basit bir yolu vardı diye hatırlıyorum ama Access'e uzun süre ara verdiğim için aklıma gelmiyor bir türlü.



  Alıntı
Bu mesajı beğenenler:
#6
DELETE t_firma.* FROM t_firma WHERE (((t_firma.firma_id)>DMin("[firma_id]","t_firma","[Marka]='" & [Marka] & "'")))
Markaya ait firma_id en kucuk olanlar haricinde diger kayitlarin silinmesi olarak kullanabilirsiniz.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Bir Belgenin Yazdırılmış Olması Durumunu Kontrol Etmek Hk? adnnfrm 7 220 03-02-2024, 03:24
Son Mesaj: dsezgin
  Açılır Kutu Değerine Göre Tablo2'ye Değer Yazsın Veya Satır Eklesin. ŞabanTR 11 299 24-12-2023, 14:38
Son Mesaj: dsezgin
  Access'e Yeni Tablo Oluşturarak Excel Import Etmek, Table'ı Sütunlara çevirmek... İlhanYaylıcı 25 1.225 02-10-2023, 13:32
Son Mesaj: halily
  Excel Içindeki Tabloyu Access Vba Ile Refresh Etmek Hk. adnnfrm 2 226 05-08-2023, 02:23
Son Mesaj: adnnfrm
  [FORM] Formda Kayıt Ve Ilişki Oluşturma, Kayıtların Metin Kutusunda Gözükmesi fx41 26 1.177 12-10-2022, 11:00
Son Mesaj: dsezgin
  Sorguda String Değeri Date Değerine çevirme. orderyazbim 4 223 22-04-2022, 12:32
Son Mesaj: halily
  Iki Ayrı Tabloda Geçen Ilgili Kayıtların Id Lerini üçüncü Bir Tabloda Eşleştirme tarkanaykın 6 338 08-03-2022, 15:38
Son Mesaj: dsezgin
access-sql-20 [RAPOR] Ard Arda Gelen Kayıtların Raporda 2 Farklı Sayfada çıkmasım Matriarch 5 248 12-01-2022, 16:32
Son Mesaj: Matriarch

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi