עבור לתוכן

שאלה ב-SQL

Featured Replies

פורסם

אני רוצה לאחד 3 שדות של תאריכים מאותה טבלה ככה שבכל שורה יהיה התאריך המקסימאלי

כמו בתמונה הזאת:

fields4jx.png

התאריך בשדה ג הוא המקסימלי ולכן הוא יועבר לשדה החדש

מישהו יודע איך עושים את זה?

פורסם

יש סביבות של SQL (אני במקרה מכיר טוב את זושל אורקל) שבהן יש את הפונקציה greatest - מחזירה את המספר הגדול מבין שני מספרים.

במקרה הזה, זה דיי פשוט לעשות את מה שאתה מבקש.


select a, b, c, greatest(greatest(a,b),c) d
from wherever

באיזה סביבה אתה מתכוון לכתוב את השליפה?

עריכה:

חיפוש קצר בMySql העלה ששם זה עוד יותר פשוט - הפונקציה greatest שם מקבלת מספר לא מוגבל של פרמטרים:


select a, b, c, greatest(a,b,c) d
from wherever

פורסם
  • מחבר

אחלה תודה :xyxthumbs:

רק עוד משהו קטן

אני רוצה לסדר את הטבלה לפי השדה החדש הזה

כרגע אין לו ממש שם, אז איך אני ממין לפיו?

order by greatest(a,b,c)??

עריכה

כניראה שכן

שוב תודה

פורסם
  • מחבר

שאלה נוספת

איך אני בודק האם טווח מסויים של תאריכים(היום פלוס 3 ימים) לא נופל על טווח אחר של תאריכים

ניסיתי ככה:

now()-(now()+3) NOT BETWEEN start AND end

אבל זה לא ממש עבד

פורסם

sd1>=sd2 and sd1<=ed2 or ed1>=sd2 and ed1<=ed2

אתה בודק האם ההתחלה או הסוף של הראשון הוא בין 2 התאריכים האחרים.

בשבילך:

now()>=start and now()<=end or now()+3>=start and now()+3<=end

ד.א. תבדוק אם זה נכון לרשום now()+3(שזה אכן מוסיף ימים). יש פונ dateadd שמוסיפה אינטרבל כלשהו לתאריך, אך אני לא זוכר איך משתמשים בה. נראה לי: dateadd(now(), "d", 3). הפונ תחזיר לך את התאריך החדש.

פורסם
  • מחבר

חשבתי ש-SQL יודעת לבד להוסיף ימים לתאריך

פורסם

חשבתי ש-SQL יודעת לבד להוסיף ימים לתאריך

כמו שאמרתי לך קודם - זה תלוי בפלטפורמה - באורקל זה בדיוק ככה. עכשיו תנסה לחשוב מה זה להוסיף דקה או שנייה...:)

פורסם
  • מחבר

אני לא מבין למה הסינטקס משתנה בין SQL אחד למשנהו

למה משהו שעובד על MySQL לא עובד על MSSQL :pissed:

פורסם

אני לא מבין למה הסינטקס משתנה בין SQL אחד למשנהו

למה משהו שעובד על MySQL לא עובד על MSSQL :pissed:

הסיבה היא יחסית פשוטה. הSQL הבסיסי (ANSI) מתעדכן לעיתים לא קרובות כל כך (למרות שהתעדכן לא מזמן). כל חברה וכל יצרן החליטו להרחיב אותו קצת כדי שיהיה יותר נוח לעבוד במסד הנתונים שלהם.

אורקל הלכה יותר לכיוון של Analytic Functions, מיקרוסופט לכיוון של קלות עבודה וMySQL יורה לכל הכיוונים.

אם אתה רוצה לכתוב משהו שיעבוד בכל הפלטפורמות, אתה יכול לכתוב בANSI SQL - ידוע גם כ-SQL99.

ב2003 יצא תקן חדש. אורקל, נכון לגרסה 10.2 לא יודעת לתמוך בו בצורה מלאה. גם שאר המוצרים לא, לפי דעתי.

הנה עוד על הנושא:

http://en.wikipedia.org/wiki/SQL#Standardization

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים