שינוי מצב מסד נתונים
-
אני משתמש בשירות מסד נתונים של SCALEWAY, ויש שם כל מיני הגבלות שצריך לשחרר ידנית.
אני מנסה להריץ שאילתא כזוSELECT from_ip, motek FROM VELO WHERE id < 100 GROUP BY motek
ומקבל שגיאה
#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'VELO.from_ip' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
יש שם מסך הגדרות, אבל אני לא מבין מה צריך להכניס לשם.
יש רעיון למישהו?
תודה רבהזה המסך הגדרות
-
@שואף למה לא תכתוב שאילתה תקנית במקום לשנות את ההגדרות לאפשר משהו פחות תקני? כלומר תוסיף את ה-
from_ip
ל-GROUP BY
או תעטוף אותו בפונקצייתANY_VALUE
ועיין עוד:
-
@yossiz אמר בשינוי מצב מסד נתונים:
משהו פחות תקני
יש את נפשך להרחיב למה זה לא תקני ואיך כן עושים את זה תקני?
-
@יוסף-בן-שמעון זה פשוט לא SQL חוקי, אני מתפלא שישנה אפשרות כן לאפשר את זה בהגדרות.
-
@חגי אמר בשינוי מצב מסד נתונים:
זה פשוט לא SQL חוקי
למה לא? לא היינו עושים כך תמיד עד הגירסאות החדשות?
-
@יוסף-בן-שמעון כשאתה רוצה GROUP BY למשל לפי שם משפחה,
אבל בתוצאות (SELECT) אתה רוצה גם שדה נגיד של הID, את איזה הוא יביא לך?
את האחרון? אולי את הראשון? זה לא מספיק הגיוני.
בMSSQL חייבים לפרט בGRPUP BY כל שדה שנמצא בSELECT ללא פונקציית צבירה (MAX או MIN וכדומה).
זה מאוד מרגיז כי לעיתים זה חסר טעם הפירוט: למשל אני מחבר טבלת אנשי קשר עם הקניות שלהם ועושה קיבוץ לפי האנשי קשר, אז הכי נח לכתוב GROUP BY contacts.id ושאר השדות של האנשי קשר הם ממילא זהים (יש רק איש קשר אחד פר קבוצה!) אבל אין רחמים בMSSQL.
כעת אני מבין שהצרה הזו עבר גם לMYSQL, שעד היום היה להם את החופש לחסוך כתיבה במקרים הללו (אפשר אפילו להשתמש בכוכבית כמדומני...) -