![]() |
# 1 |
חבר בקהילה
|
![]() היי אני רוצה לשלוף מספר IDS אבל בסדר שלי למשל:
קוד:
SELECT * FROM mytable WHERE id IN (3,1,4) 3 1 4 בדיוק בסדר ששלפתי. מישהו יודע? (מדובר על SQLite) |
![]() |
![]() |
# 2 |
עסק רשום [?]
|
תעשה את זה ב- php.
https://www.google.co.il/#q=user-def...ay+sorting+php תחזיק מערך עם כל ה- IDs האלו, תשפוך אותו לשאילתה ואז כשאתה מקבל את התוצאות תרוץ עליהן עם פונקצית sorting משלך ותסדר את הרשומות שחזרו בהתאם למיקום של ה- id במערך המקורי. פונקצית המיון מקבלת כל הזמן 2 פרמטרים, האיבר הנוכחי והאיבר הבא, ובהתאם ל- return value שלה המקומות שלהם מתחלפים. היא ממשיכה לרוץ על המערך עד שכל הרשומות מסודרות כמו שצריך. |
![]() |
![]() |
# 3 |
חבר בקהילה
|
האמת שבstackoverflow נתנו לי את הפתרון:
קוד:
order by instr(',3,1,4,', ',' || id || ',') קוד:
SELECT * FROM mytable WHERE id IN (3,1,4) ORDER BY CASE WHEN id = 3 THEN 1 WHEN id = 1 THEN 2 WHEN id = 4 THEN 3 END |
![]() |
![]() |
# 4 |
עסק רשום [?]
|
את הפתרון הראשון אני לא מכיר.
את הפתרון השני מכיר בצורה די שטחית - ל- 3 שורות כמו במקרה הזה זה עשוי להתאים ולהיות פשוט יותר לכתיבה יחסית לפונקצית מיון ברמת האפליקציה, אם יש לך מס' לא מוגבל או לא ידוע מראש של IDs, הפתרון הזה לא סקלאבילי ולא מתאים לדעתי, נראה לי לא הגיוני לכתוב שורה כזו עבור כל id (גם אם זה יהיה אוטומטי, זאת עדיין שאילה ענקית שנשלחת לדטאבייס). מבחינת מהירות - ל- 3 תוצאות ההבדל זניח, לכמות גדולה של רשומות צריך לבדוק. מצד אחד ה- DB אמור להיות מהיר יותר בפעולות מהסוג הזה בהנחה ויש אינדקסים והכל, מצד שני לא עבדתי עם הפונקציונליות הזו וממבט חטוף היא נראית לי לא ממש מתאימה לסוג המיון שאתה רוצה לעשות ובמקרה שיש הרבה תנאים כאלו. |
![]() |
![]() |
# 5 | |
חבר מתקדם
|
ציטוט:
לשיקולך, תמיד אפשר להחליף משאילתא לשרת ולהפך. |
|
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
כלים לאשכול | |
תצורת הצגה | |
|
|