Posts

Showing posts with the label sql

count של כמה ערכים בשאילתא אחת ב - SQL

לעיתים אנחנו רוצים לספור כמה ערכים שונים בשאילתא אחת ב - MySQL. שליפה של סט נתונים מתוך טבלא בבסיס הנתונים, ומתוך הספירה הכללית COUNT(*)  לספור תתי נתונים. שיטה חמודה לעשות זא, באמצעות CASE WHEN ב- MySQL. SELECT          date(stime),      COUNT(salesid),      SUM(CASE status WHEN 'done' THEN 1 ELSE 0 END) as TotalDone,      SUM(CASE status WHEN 'remaining' THEN 1 ELSE 0 END) as TotalRemaining,      SUM(CASE status WHEN 'cancelled' THEN 1 ELSE 0 END) as TotalCancelled FROM  sales GROUP BY date(stime) mysql multiple count in single query - stack overflow

שליפת רשומה עדכנית ב - MySQL מתוך GROUP

במקרים רבים יש לנו טבלא בבסיס הנתונים המכילה אוסף רשומות של שינויי סטטוס הכוללים הסטוריה. משהו בדומה ל - בתאריך 2013-02-07, הועבר שחקן x לשרת s1 בתאריך 2013-02-07, הועבר שחקן y לשרת s2 בתאריך 2013-02-08, הועבר שחקן x לשרת s2 בתאריך 2013-02-09, הועבר שחקן x לשרת s3 בתאריך 2013-02-09, הועבר שחקן y לשרת s1 הטבלא תראה בערך כך: id date player server 1 2013-02-07 x s1 2 2013-02-07 y s2 3 2013-02-08 x s2 4 2013-02-09 x s3 5 2013-02-09 y s1 ואנחנו רוצים לשלוף את הרשומה העדכנית ביותר עבור כל אחד מהשחקנים. כלומר כל שחקן באיזה שרת הוא נמצא. שיטה מעניינת לעשות זאת, היא באמצעות left join query לאותה טבלא עצמה בצורה זו: SELECT     * FROM     table AS t         LEFT JOIN table AS t2 ON t.player=t2.player AND t.date < t2.date WHERE t2.date IS NULL זה ייתן לנו תוצאה כזו: id date player server 4 2013-02-09 x s3 5 2013-02-09 y s1 לקריאה נוספת: stack over...

jlinq הכיף שב - JavaScript

ספריית JavaScript חמודה שנתקלתי בה הינה ספריית jlinq . jlinq היא ספריית JavaScript לביצוע שאילתות וחיתוכים על אובייקטי JSON מתוך JavaScript. משהו כמו לבצע שאילתות SQL על אובייקטים בזכרון במהלך הריצה של קוד JavaScript. נניח ויש לנו אובייקט כזה: data.users = [{id:1,name:' x ', last:' y ',age:32}, {id:2,name:' john ', last:' do ',age:10}, {id:3,name:' zoe ', last:' brown ',age:45}, {id:4,name:' jz ', last:' kin ',age:56 }]; ננח שנרצה את כל המשתמשים שהשם שלהם מתחיל ב - j: jlinq.from(data.users) .starts(' first ', ' j ').select() ונניח שנרצה את כל אלו שהשם שלהם מתחיל ב - j והם מעל גיל 20 מסודרים לפי גיל: jlinq.from(data.users) .starts(' first ', ' j ').greater(' age ',20).order(' age ').select() הכוח של הספרייה הזו מאוד חזק. ומאפשרת המון שאילתות מאוד מתוחכמות שחוסכות לנו את כל לולאות ה - for שהיינו צריכים לכת...

Mysql indexes Shortcuts

Mysql indexes Inside a table: INDEX(indexed_column) Multiple Column Index INDEX(indexed_column, indexed_column2) Add Index to a table ALTER TABLE table_name ADD INDEX(indexed_column) Show Indexes: SHOW INDEXES FROM table_name; Remove Index ALTER TABLE table_name DROP INDEX index_name;

הוספת רשומה ל - MySQL או לעדכן אם קיימת

בעבר אם היינו צריכים להכניס רשומה לטבלא היינו צריכים לבדוק האם היא כבר קיימת ובמידה וכן אז לעדכן. בגרסאות חדשות של MySQL ואם בונים נכון את הטבלא והגדרת ה - Keys וה - Unique ניתן להשתמש: INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1 ' להכניס לטבלא ובאם ה- Key קיים אז לעדכן. לקריאה נוספת