Skip to main content

AccessTr.neT


Sorguda 2. Tablodan Sadece 1 Kayıt (en Üstteki Kayıt)

Sorguda 2. Tablodan Sadece 1 Kayıt (en Üstteki Kayıt)

Çözüldü #1
Kıymetli Hocalarım merhaba

Eli dosyada tbl_Orders ve tbl_OrderMaterials adında iki tablo mevcut, Order_ID değerleri üzerinden eşleştirme yapıyorum.

yer alan sorguda tbl_OrderMaterials tablosundan sadece 1 kayıt( en üsteki) kayıt gelecek şekilde düzenlemeye çalıştım ama;

Özetle her bir Order Numarasına ait 1 kayıt gelecek.

Kod:
SELECT tbl_Orders.ID, tbl_Orders.SuppNumber, tbl_Orders.SiteID, tbl_Orders.SiteName, tbl_Orders.SupplierName, tbl_Orders.OrderDate, First(tbl_OrderMaterials.MaterialName) AS Material
FROM tbl_Orders LEFT JOIN tbl_OrderMaterials ON tbl_Orders.ID = tbl_OrderMaterials.Order_ID;


desteğiniz için şimdiden teşekkürler,
iyi Çalışmalar.
.rar Db3.rar (Dosya Boyutu: 22,46 KB | İndirme Sayısı: 2)
truhi, 29-09-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#2
Merhaba
Sorgu tasarım penceresinde ilişkinin türünü her 2 taboladan eşleşen kayıtları göster olarak ayarlayn.
 İyi olan tek şey bilgi ve kötü olan tek şey de cehalettir. (Sokrates)
Cevapla
#3
(21/08/2025, 14:33)onur_can yazdı: Merhaba
Sorgu tasarım penceresinde ilişkinin türünü her 2 taboladan eşleşen kayıtları göster olarak ayarlayn.
Hocam ilginiz için teşekkürler,

yalnız Material boş olanları da getirmesi gerekiyor, onları boş kayıt;
özetle Order ID' de tüm kayıtlar gelmeli, material olanlarda 1 kayıt, olmayanlar boş olarak gelmeli

iyi Çalışmalar dilerim.
truhi, 29-09-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#4
açıklamanız yetersiz, her 2 tabloyla bu işlemi yapmak için 2 tablo arasında ilişki kurmalısınız, ilişkide kurulmamış, ayrıca boş derken bir alandan mı bahsediyorsunuz, hangi tablonun hangi alanı boş olanlar?
 İyi olan tek şey bilgi ve kötü olan tek şey de cehalettir. (Sokrates)
Cevapla
#5
aşağıdakine benzer bir sorgu işinizi görebiir
ben tek sorgu olarak tasarladım ama siz 2 sorgunun birleşimi olarak da tasarlayabilirsiniz
SELECT
xSQL.ID,
xSQL.SuppNumber,
xSQL.SiteID,
xSQL.SiteName,
xSQL.SupplierName,
OrderDate,
tbl_OrderMaterials.MaterialName
FROM
(
SELECT
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate,
Min(tbl_OrderMaterials.ID) AS EnAzID
FROM
tbl_Orders
LEFT JOIN tbl_OrderMaterials ON tbl_Orders.ID = tbl_OrderMaterials.Order_ID
GROUP BY
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate
) AS xSQL
LEFT JOIN tbl_OrderMaterials ON xSQL.EnAzID = tbl_OrderMaterials.ID;
_______________________________________________________________________
yada 2 sorgu halinde
önce AraSQL adında sorgu oluşturup aşağıda kodu girin
SELECT
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate,
Min(tbl_OrderMaterials.ID) AS EnAzID
FROM
tbl_Orders
LEFT JOIN tbl_OrderMaterials ON tbl_Orders.ID = tbl_OrderMaterials.Order_ID
GROUP BY
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate;
sonra da aşağıdaki sorguy oluşturmayı deneyin
SELECT
AraSQL.ID,
AraSQL.SuppNumber,
AraSQL.SiteID,
AraSQL.SiteName,
AraSQL.SupplierName,
OrderDate,
tbl_OrderMaterials.MaterialName
FROM
AraSQL
LEFT JOIN tbl_OrderMaterials ON AraSQL.EnAzID = tbl_OrderMaterials.ID;
dilerim işinize yarar
Cevapla
#6
(21/08/2025, 15:30)berduş yazdı: aşağıdakine benzer bir sorgu işinizi görebiir
ben tek sorgu olarak tasarladım ama siz 2 sorgunun birleşimi olarak da tasarlayabilirsiniz
SELECT
xSQL.ID,
xSQL.SuppNumber,
xSQL.SiteID,
xSQL.SiteName,
xSQL.SupplierName,
OrderDate,
tbl_OrderMaterials.MaterialName
FROM
(
SELECT
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate,
Min(tbl_OrderMaterials.ID) AS EnAzID
FROM
tbl_Orders
LEFT JOIN tbl_OrderMaterials ON tbl_Orders.ID = tbl_OrderMaterials.Order_ID
GROUP BY
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate
) AS xSQL
LEFT JOIN tbl_OrderMaterials ON xSQL.EnAzID = tbl_OrderMaterials.ID;
_______________________________________________________________________
yada 2 sorgu halinde
önce AraSQL adında sorgu oluşturup aşağıda kodu girin
SELECT
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate,
Min(tbl_OrderMaterials.ID) AS EnAzID
FROM
tbl_Orders
LEFT JOIN tbl_OrderMaterials ON tbl_Orders.ID = tbl_OrderMaterials.Order_ID
GROUP BY
tbl_Orders.ID,
tbl_Orders.SuppNumber,
tbl_Orders.SiteID,
tbl_Orders.SiteName,
tbl_Orders.SupplierName,
tbl_Orders.OrderDate;
sonra da aşağıdaki sorguy oluşturmayı deneyin
SELECT
AraSQL.ID,
AraSQL.SuppNumber,
AraSQL.SiteID,
AraSQL.SiteName,
AraSQL.SupplierName,
OrderDate,
tbl_OrderMaterials.MaterialName
FROM
AraSQL
LEFT JOIN tbl_OrderMaterials ON AraSQL.EnAzID = tbl_OrderMaterials.ID;
dilerim işinize yarar

Teşekkürler Hocam ,
tam istediğim gibi oldu ...

iyi çalışmalar dilerim.
truhi, 29-09-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task