![]() |
sql - שליפת כל השורות חוץ מ-ה2 אחרונות...
היי חברה,
אשמח לעזרה בקשר לשליפת כל השורות בטבלה חוץ מ-ה2 האחרונות שהוספתי. לדוגמא הכנסתי 4 שורות: 1 - X 2 - Y 3 - Z 4 - B אז אני מעוניין שזה יציג רק את X,Y. מקווה שהבנתם, תודה ושבת שלום;P |
בשאליתה ראשונה - סופר את כל השורות שבטבלה,שאליתה שניה - משתמש ב-limit על פי מספר השורות שיצאו-2, דוגמא:
PHP קוד:
|
בהנחה שיש לך מיליון שורות, LIMIT הרבה הרבה הרבה הרבה פחות יעיל אם לכל תא יש ID עם AUTO INCREMENT
תנסה את השאילתא הבאה SELECT COUNT(*) AS `minustwo` FROM `search` WHERE `id` < $total - 2 או שאולי זה ירוץ לך (לא נגעתי בSUBQUERIES הרבה זמן אז אין לי ערבות): SELECT COUNT(*) AS `minustwo` FROM `search` WHERE `id` < ((SELECT COUNT(*) FROM `search`) - 2) |
קודם, תודה רבה, לשניכם...(אף קוד לא עבד לי)
ציטוט:
זה לא חוקי לעשות "LIMIT 0,$rows-2" לפי איך שאני יודע... ציטוט:
עוד שאלה: עשיתי הצגה של 2 שורות מהמסד, כאשר השליפה ע"פ status ברגע ש status = 1 אז זה מציג אותם, וברגע שיש מעל 2 ש status = 1 אז אני מעוניין שid הכי גבוהה ישתנה לו ה status = 0. ככה שבסופו של דבר בכל השורות יכול להיות מצב שיהיו רק 2 status ששוים ל1. מקווה שהבנתם, אני יודע שהסברתי את זה מסובך קצת... |
|
ציטוט:
|
זה בסדר להכניס פקודה חיסור בתוך שאילתה. אבל זה יהווה בעיה כשהערך $total יהיה שווה ל2 או פחות .
|
אני לא מוצא סיבה שלהכניס פקודת חיסור לא תיהיה חוקית...
נסה את הקוד הבא(היה טעות בקוד הקודם): PHP קוד:
בנוגע לבעיה של וואדים, אפשר לעשות תנאי שאם השורות קטנות מ-2 הקוד פשוט לא יתבצע,אוו abs(),אוו בודק אם יש תוצאה(mysql_result). |
כן זאת הכוונה ובקוד למעלה אין בדיקה כזאת אז הקוד למעלה ישבר במידה והערך יהיה שווה ל 2 או פחות. עוד דבר לדבר פשוט כזה אפשר למנוע משימוש בפונקציות שציינת. כל אחת מהם תקח זמן מאשר פעולה פשוטה של חיסור או בדיקת הערך .
|
ציטוט:
ציטוט:
|
כל הזמנים הם GMT +2. הזמן כעת הוא 18:18. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ