עזרה בשאילתה SQL
קדם ‹ Forums ‹ הייטק ‹ Database Design & Development ‹ עזרה בשאילתה SQL
-
עזרה בשאילתה SQL
פורסם ע"י יעל כהן הייטק on 28/07/2022 ב4:50 pmיש לי טבלה שאחד השדות בה הוא ספרור פנימי ואני צריכה את האחרון שהוסף- את הספרור הגדול.
דוג’: יש טבלת מחירים למוצר .
לכל מוצר יש כמה מחירים בטבלה עם ספרור פנימי(1,2,3 וכו) אני צריכה לשלוף את כל המוצרים העונים לתנאי מסויים, ושלא ישלף לי כל מוצר כמה פעמים אלא את המוצר שלו המחיר הוא העדכני ביותר- הספרור הפנימי הגבוה ביותר.
לי נשלף כמו בטבלה המצורפת ואני צריכה רק את השדות בהם המחיר הוא העדכני ביותר- מודגש בצהוב.
אודה לעזרתכן.
יעל כהן הגיבה לפני 2 שנים, 5 חודשים 5 חברות · 5 תגובות -
5 תגובות
-
000חברה חדשה
אפשר להשתמש בcross apply , זה כמו inner join שבתוכו את שולפת רק את המוצר האחרון.
select p.Price
from Producs p
*cross apply (select top 1
from Products t
where t.KodProduct = p.KodProduct
order by t.Number desc) lastProduct -
020חברה חדשה
group by לא יעזור לך כי את צריכה לדעת מה האחרון לכל קבוצה.
את יכולה גם להשתמש בMAX:
select price
from tbl_product p1
where sifrur (select max(sifrur)
from tbl_product p2
where p1.name = p2.name)
-
000חברה חדשה
את יכולה לעשות view שיביא לך את האחרון לכל מוצר, ואז לשלוף לפי קוד מוצר.
ואם זה שימוש חד פעמי פשוט להוסיף תנאי בשאילתא הפנימית.
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY Product ORDER BY Sifrur DESC) AS RowNum FROM Table) Source
WHERE RowNum = 1
And Product = ‘עגבניה’
הסבר:
הפונקציה ROW_NUMBER ממספרת את השורות שנשלפו בסדר רץ.
פרמטר ראשון בפונקציה: לפי מה לקבץ. כלומר- מחלק את הטבלה לקבוצות ומתחיל מספור מחדש 1-2-3 לכל קבוצה לחוד.
פרמטר שני – לפי מה למיין את הקבוצה. במקרה הזה – לפי ספרור יורד.
כל העגבניות מקובצות יחד, בספרור יורד, וכל שורה ממסופרת במספור רץ.
כשאת שולפת רק את המספור “1” את לוקחת את השורה הראשונה, העליונה בכל קבוצה.
-
18600חברה חדשה
תודה לכלוכן
עזרתן ממש.
עשיתי בסוף עם תת שאילתה ו-ORDER BY.
סורי שאני לא מפרסמת- אבטחת מידע.
(העגבניות היו דוגמה… 😉)
Log in to reply.