المشاركات : 47
المواضيع 11
الإنتساب : Dec 2014
السمعة :
2
الشكر: 70
تم شكره 90 مرات في 12 مشاركات
18-01-25, 02:56 AM
(آخر تعديل لهذه المشاركة : 27-01-25, 01:27 AM {2} بواسطة momiana1.)
السلام عليكم
لدي قائمة بها
اسم المشترك وقيمة الاشتراك وسنة الاشتراك
اريد التعديل على كود لاستعلام لجلب الاسم واخر سنة اشتراك
مثال على ذلك invoice
name ........ ID ......... price....... year
2022 ....... 25 ......... Mohammed ...... 001
2022 .........25 ........ Ali ....... 002
2023 ........ 25......... Ahmed ...... 003
2023 ......... 25 ....... Mohammed ..... 001
2023 ......... 25 ........ Ali ....... 002
2024 ........ 25 ......... Mohammed ..... 001
النتيجة المطلوبة
2024 ...... 25 ....... Mohammed ...... 001
2023 ....... 25 ...... Ali ........ 002
2023 ....... 25 ...... Ahmed ....... 003
كود :
Try
SQLstr = "SELECT MAX(year)FROM list WHERE ID LIKE '@ID'"
If Me.BindingContext(DataSet1, "list").Count = 0 Then
MsgBox("لا توجد نتائج , تأكد من وجود إيصالات مخزنة بالمنظومة ")
Exit Sub
End If
Catch ex As Exception
End Try
المشاركات : 47
المواضيع 11
الإنتساب : Dec 2014
السمعة :
2
الشكر: 70
تم شكره 90 مرات في 12 مشاركات
قمت بالتعديل على الكود ولكن في خطأ عند التنفيذ
كود :
Try
SQLstr = "SELECT * FROM invoice where exists ( select * from invoice high where high.ID = invoice.ID and high.year > invoice.year)"
If Me.BindingContext(DataSet1, "invoice").Count = 0 Then
MsgBox("لا توجد نتائج , تأكد من وجود إيصالات مخزنة بالمنظومة ")
'Exit Sub
End If
Catch ex As Exception
End Try
المشاركات : 137
المواضيع 22
الإنتساب : Dec 2023
السمعة :
27
الشكر: 45
تم شكره 180 مرات في 102 مشاركات
و عليكم السلام
لتنفيذ الاستعلام الذي يعرض آخر سنة اشتراك لكل مشترك بناءً على الـ ID، يمكنك استخدام الاستعلام التالي في SQL للحصول على النتيجة المطلوبة:
PHP كود :
SELECT ID, name, MAX(year) AS last_year FROM invoice GROUP BY ID, name ORDER BY last_year DESC
PHP كود :
Try ' استعلام SQL لجلب اسم المشترك وآخر سنة اشتراك له Dim SQLstr As String = "SELECT ID, name, MAX(year) AS last_year FROM invoice GROUP BY ID, name ORDER BY last_year DESC" ' إنشاء اتصال بقاعدة البيانات Using conn As New SqlConnection("YourConnectionStringHere") conn.Open() ' إنشاء SqlCommand لتنفيذ الاستعلام Using cmd As New SqlCommand(SQLstr, conn) ' إنشاء SqlDataAdapter لملء البيانات Using adapter As New SqlDataAdapter(cmd) ' إنشاء DataTable لتخزين النتائج Dim dt As New DataTable() ' ملء الـ DataTable بالبيانات من الاستعلام adapter.Fill(dt) ' التحقق من وجود نتائج If dt.Rows.Count = 0 Then MsgBox("لا توجد نتائج , تأكد من وجود إيصالات مخزنة بالمنظومة") Exit Sub End If ' عرض النتائج في DataGridView أو أي عنصر آخر ' على سبيل المثال، إذا كنت تريد عرض البيانات في DataGridView: DataGridView1.DataSource = dt End Using End Using End Using Catch ex As Exception ' عرض رسالة خطأ في حال حدوث استثناء MsgBox("حدث خطأ: " & ex.Message) End Try
المشاركات : 167
المواضيع 20
الإنتساب : Jul 2014
السمعة :
43
الشكر: 10
تم شكره 345 مرات في 126 مشاركات
04-02-25, 09:45 PM
(آخر تعديل لهذه المشاركة : 04-02-25, 09:45 PM {2} بواسطة aliday03.)
مثال عملي على السيكوال سيرفر
كود :
CREATE DATABASE Test
GO
USE Test
go
CREATE TABLE Subscribers (
SubscriberID INT PRIMARY KEY,
EmployeeName NVARCHAR(255),
SubscriptionYear INT
);
go
INSERT INTO Subscribers (SubscriberID, EmployeeName, SubscriptionYear) VALUES
(1,N'أحمد', 2020),(10,N'أحمد', 2021),(11,N'أحمد', 2022),(12,N'أحمد', 2023),(13,N'أحمد', 2024),(14,N'أحمد', 2025),
(2,N'خالد', 2019),(21,N'خالد', 2020),(22,N'خالد', 2021),(26,N'خالد', 2022),(23,N'خالد', 2023),(24,N'خالد', 2024),
(3,N'فاطمة', 2022),(31,N'فاطمة', 2023),(32,N'فاطمة', 2024),(33,N'فاطمة', 2025),(34,N'علي', 2018),
(4,N'علي', 2019),(41,N'علي', 2023),(42,N'علي', 2024),
(5,N'سارة', 2021),(51,N'سارة', 2022),
(6,N'محمد', 2022),(61,N'محمد', 2023),(62,N'محمد', 2024),(63,N'محمد', 2025);
GO
WITH LatestYear AS (
SELECT MAX(SubscriptionYear) AS MaxYear
FROM Subscribers
),
RankedSubscriptions AS (
SELECT
SubscriberID,
EmployeeName,
SubscriptionYear,
RANK() OVER (PARTITION BY SubscriberID ORDER BY SubscriptionYear DESC) AS SubscriptionRank
FROM
Subscribers
WHERE SubscriptionYear = (SELECT MaxYear FROM LatestYear) -- استخدام السنة الأحدث من الاستعلام الفرعي
)
SELECT
SubscriberID,
EmployeeName,
SubscriptionYear
FROM
RankedSubscriptions
WHERE
SubscriptionRank = 1;
التميز و الابداع شعاري
|