أحبائي الغالييييييييييين
تحية طيبة وبعد ،،،
عندي جدولين اساسي يحتوي على بيانات الاصناف والاخر يحتوي على الحركة الشهرية للاصناف.
المطلوب :
عمل استعلام لاخر حركتين لكل صنف
بارك الله فيكم
تفضل اخى
فقط قم باضافة حقل ترقيم تلقائى الى جدول الحركات باسم id
و استخدم هذا الاستعلام
SELECT Items.NoItem, Items.Item, DLast("Date","moves","id<" & DLast("id","moves","noitem=" & items.noItem) & " and noitem=" & items.noItem & "") AS d, DLast("qty","moves","id<" & DLast("id","moves","noitem=" & items.noItem) & " and noitem=" & items.noItem & "") AS q, DLast("price","moves","id<" & DLast("id","moves","noitem=" & items.noItem) & " and noitem=" & items.noItem & "") AS p
FROM Items INNER JOIN Moves ON Items.NoItem = Moves.NoItem
GROUP BY Items.NoItem, Items.Item
UNION ALL SELECT Items.NoItem, Items.Item, Last(Moves.Date) AS d, Last(Moves.QTY) AS q, Last(Moves.Price) AS p
FROM Items INNER JOIN Moves ON Items.NoItem = Moves.NoItem
GROUP BY Items.NoItem, Items.Item
ORDER BY NoItem, d;و هذا الاستعلام سيكون اسرع
و بدون اضافة حقل جديد
SELECT Items.NoItem, Items.Item, Last(Moves.Date) AS LastOfDate, Last(Moves.QTY) AS LastOfQTY, Last(Moves.Price) AS LastOfPrice FROM Items INNER JOIN (Moves LEFT JOIN [SELECT Items.NoItem, Items.Item, Last(Moves.Date) AS d, Last(Moves.QTY) AS q, Last(Moves.Price) AS p FROM Items INNER JOIN Moves ON Items.NoItem = Moves.NoItem GROUP BY Items.NoItem, Items.Item ORDER BY Items.NoItem, Last(Moves.Date);]. AS [last] ON Moves.Date = last.d) ON Items.NoItem = Moves.NoItem GROUP BY Items.NoItem, Items.Item, last.d HAVING (((last.d) Is Null)); UNION ALL SELECT Items.NoItem, Items.Item, Last(Moves.Date) AS d, Last(Moves.QTY) AS q, Last(Moves.Price) AS p FROM Items INNER JOIN Moves ON Items.NoItem = Moves.NoItem GROUP BY Items.NoItem, Items.Item ORDER BY NoItem, LastOfDate;
تم تعديل هذه المشاركة بواسطة mrnooo2000 في 4 أكتوبر 2010 في 09:41
أخي الغالي
مليون تحية طيب لك وألف شكر على الاستعلام الجميل
[يمين]
إذا كـان تـرك الـدين يعــنــي تقــدمــاً
فـيا نفــس مـوتــي قبــل أن تتقـدمــي
[/يمين]