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

1 2
21/08/2025, 14:24

truhi

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.
21/08/2025, 14:33

onur_can

Merhaba
Sorgu tasarım penceresinde ilişkinin türünü her 2 taboladan eşleşen kayıtları göster olarak ayarlayn.
21/08/2025, 14:54

truhi

(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.
21/08/2025, 15:26

onur_can

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?
21/08/2025, 15:30

berduş

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
21/08/2025, 15:44

truhi

(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.
1 2