הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   MySQL | שאלה לגבי סידור פלט (https://hosts.co.il/forums/showthread.php?t=61068)

Kfir.G 18-03-08 17:53

MySQL | שאלה לגבי סידור פלט
 
שלום,
יש לי טבלה המכילה את הטורים order וtitle. עכשיו מה שאני רוצה לעשות זה לשלוף קודם את השורות שבהן order לא שווה לאפס ולסדר אותם בסדר עולה ואחרי השורות הנ"ל לשלוף את שאר השורות בסדר עולה לפי title.
חשבתי אולי להכניס if לתוך הorder by אבל זה החזיר לי שגיאה...
יש דרך מובנית לעשות את זה או שאני אצטרך לכתוב פונקציה בעצמי? :(

תודה מראש,
כפיר

FuZuL 18-03-08 20:01

WHERE order != 0

Kfir.G 18-03-08 20:16

דבר ראשון FuZuL אני רוצה להודות לך על זה שאתה מנסה לעזור :)

ציטוט:

נכתב במקור על ידי FuZuL (פרסם 617116)
WHERE order != 0

ומה בדיוק אני משיג בזה? במקרה שלא הבנת אני רוצה לשלוף את כל השורות ואני רוצה לשלוף את השורות שבהן order לא שווה אפס ראשונות ולסדר אותן בסדר עולה ולאחר מכן את השורות שבהן order כן שווה לאפס מסודרות בסדר עולה.

עם מה שאתה נתת אפשר לפתור את הבעיה בשתי שאילתות כשבאחת אני שולף רק את השורות שבהן order לא שווה לאפס מדפיס אותן מסודרות ואז את השאר. אני כאמור מחפש פתרון בעזרת שאילתה אחת בלבד.

יום נעים,כפיר

בניה 18-03-08 20:41

http://www.w3schools.com/php/php_mysql_order_by.asp
תקרא את הלמטה, Order by Two Columns
אולי זה יעזור לך.

דור 18-03-08 21:25

order by תכונה

Kfir.G 18-03-08 21:38

ציטוט:

נכתב במקור על ידי Kfir.G | WebPower.co.il (פרסם 617082)
שלום,
יש לי טבלה המכילה את הטורים order וtitle. עכשיו מה שאני רוצה לעשות זה לשלוף קודם את השורות שבהן order לא שווה לאפס ולסדר אותם בסדר עולה ואחרי השורות הנ"ל לשלוף את שאר השורות בסדר עולה לפי title.
חשבתי אולי להכניס if לתוך הorder by אבל זה החזיר לי שגיאה...
יש דרך מובנית לעשות את זה או שאני אצטרך לכתוב פונקציה בעצמי? :(

תודה מראש,
כפיר

ציטוט:

נכתב במקור על ידי בניה (פרסם 617130)
http://www.w3schools.com/php/php_mysql_order_by.asp
תקרא את הלמטה, Order by Two Columns
אולי זה יעזור לך.

דבר ראשון תודה על זה שאתה מנסה לעזור :)
עכשיו order by פשוט לא יעזור כאן שכן הוא יסדר בסדר עולה או יורד תוך כדי התחשבות באפסים! ומאחר שאני לא רוצה שהוא יתחשב באפסים כלומר אני רוצה שהמספרים שאינם שווים לאפס יוצגו בסדר עולה והאפסים יוצגו בסדר עולה לפי הטור השני זה לא עוזר לי...

יום טוב,
כפיר

Dum 18-03-08 21:58

חשבת על UNION?

בניה 18-03-08 22:12

את השורות הראשונות שהORDER שלהם שונה מ0, תהפוך בהם את הערכים של ORDER כך שהכי קטן יבוא אחרון וכך תוכל לסדר את זה בסדר יורד, וכבר לבד כבר השורות עם הorder 0 יבואו אחריהן.

ולשורות שבהן ORDER = 0 ה order by title יכנס לפעולה.

Kfir.G 18-03-08 22:17

ציטוט:

נכתב במקור על ידי בניה (פרסם 617160)
את השורות הראשונות שהORDER שלהם שונה מ0, תהפוך בהם את הערכים של ORDER כך שהכי קטן יבוא אחרון וכך תוכל לסדר את זה בסדר יורד, וכבר לבד כבר השורות עם הorder 0 יבואו אחריהן.

ולשורות שבהן ORDER = 0 ה order by title יכנס לפעולה.

זה לא יעזור לי כי אני רוצה לסדר את זה ככה
1
2
3
4
0
0
0
...

ומה שאתה אמרת יסדר לי את זה ככה
4
3
2
1
0
0
0
...

רעיונות נוספים?

בניה 18-03-08 22:22

אני אומר לך לארגן את המערכת ORDER שלך הפוך.
שהראשון יהיה זה עם ה ORDER הכי גבוה והאחרון זה עם ההכי נמוך.
וכך באופן טבעי כל השורות עם ה 0 יבואו אחרי אלו עם הORDER.


_________________________
זו אופציה אחרת:
ואתה יכול אחרי השליפה לעשות מיון בPHP.

אחרי שאתה שולף את כל אלו עם ORDER שונה מ 0 ואת השאר, אתה מכניס למערך בPHP ועושה מיון

Kfir.G 18-03-08 22:25

ציטוט:

נכתב במקור על ידי Dum (פרסם 617155)
חשבת על UNION?

איך בדיוק זה יעזור לי? הorder by בunion חל על כל הselect שאני מאחד..

ציטוט:

נכתב במקור על ידי בניה (פרסם 617162)
אני אומר לך לארגן את המערכת ORDER שלך הפוך.
שהראשון יהיה זה עם ה ORDER הכי גבוה והאחרון זה עם ההכי נמוך.
וכך באופן טבעי כל השורות עם ה 0 יבואו אחרי אלו עם הORDER.

ואתה יכול אחרי השליפה לעשות מיון בPHP.

לארגן את המערכת ORDER שלי הפוך זה בלתי אפשרי כרגע מאחר שהחלק הזה נשלט בפאנל ועל מנת שהפאנל יהיה ידידותי למשתמש צריך לעשות אותו בסדר עולה.

מיון בPHP זה אפשרי אבל זה להתחמק בעיה ולא לפתור אותה =\ אין דרך לעשות זאת בתוך השאילתה עצמה?

בניה 18-03-08 22:32

אני חושב שאפשר לשנות את הסדר ללא פגיעה בנוחות למשתמש,ואפילו שכל ההיפוך יתבצע בPHP והמשתמש יראה אותו דבר.
ועוד אופציה זה להכניס לתא ORDER לכל מה שאין לו ORDER שאתה הכנסת את הערך הכי גדול שהשדה יכול לקבל, או כל מספר אסטרונומי.
כך שאתה תוכל לזהות בקוד שלך שזה לא רלוונטי בתור ORDER שלך, אבל זה עדיין הORDER BY של הMYSQL ישים אותם אחרי ה
1
2
3
4
שלך


_____________________
ובנוגע להתחמקות בעיה, יש הרבה מצבים שמיון בPHP יהיה יותר יעיל וטוב לשרת מאשר בשרת SQL

Kfir.G 18-03-08 22:52

ציטוט:

נכתב במקור על ידי בניה (פרסם 617168)
אני חושב שאפשר לשנות את הסדר ללא פגיעה בנוחות למשתמש,ואפילו שכל ההיפוך יתבצע בPHP והמשתמש יראה אותו דבר.
ועוד אופציה זה להכניס לתא ORDER לכל מה שאין לו ORDER שאתה הכנסת את הערך הכי גדול שהשדה יכול לקבל, או כל מספר אסטרונומי.
כך שאתה תוכל לזהות בקוד שלך שזה לא רלוונטי בתור ORDER שלך, אבל זה עדיין הORDER BY של הMYSQL ישים אותם אחרי ה
1
2
3
4
שלך


_____________________
ובנוגע להתחמקות בעיה, יש הרבה מצבים שמיון בPHP יהיה יותר יעיל וטוב לשרת מאשר בשרת SQL

החלטתי ללכת על הרעיון לשים במקום אפס ערך אסטרונמי זה באמת פתרון פשוט לבעיה תודה :)
עכשיו בקשר לשורה שהדגשתי בציטוט שלך איך אני בדיוק יכול להשוות?

בניה 18-03-08 22:57

לא עולה לי דוגמא טובה לראש, אבל לפעמים במקום שליפה וORDER BY בMYSQL, עדיף לשלוף נתונים מבולגאנים ולסדר אותם כשהם בזיכרון בשרת ולא נועלים חלקים במסד נתונים.


כל הזמנים הם GMT +2. הזמן כעת הוא 06:07.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ