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

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

S-Preso 08-11-08 03:47

sql - שליפת כל השורות חוץ מ-ה2 אחרונות...
 
היי חברה,

אשמח לעזרה בקשר לשליפת כל השורות בטבלה חוץ מ-ה2 האחרונות שהוספתי.

לדוגמא הכנסתי 4 שורות:

1 - X
2 - Y
3 - Z
4 - B

אז אני מעוניין שזה יציג רק את X,Y.

מקווה שהבנתם,
תודה ושבת שלום;P

Shon12 08-11-08 06:35

בשאליתה ראשונה - סופר את כל השורות שבטבלה,שאליתה שניה - משתמש ב-limit על פי מספר השורות שיצאו-2, דוגמא:
PHP קוד:

<?php

      mysql_query
("select `column`  from `table_name`");
      
$rows mysql_num_rows($query);
      
mysql_query("select `column` from `table_name` LIMIT 0,$rows-2");
?>

ואת השאליתה השניה אתה מדפיס, בהצלחה.

intercooler3819 08-11-08 13:19

בהנחה שיש לך מיליון שורות, 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)

S-Preso 08-11-08 17:00

קודם, תודה רבה, לשניכם...(אף קוד לא עבד לי)

ציטוט:

נכתב במקור על ידי Shon12 (פרסם 680301)
בשאליתה ראשונה - סופר את כל השורות שבטבלה,שאליתה שניה - משתמש ב-limit על פי מספר השורות שיצאו-2, דוגמא:
PHP קוד:

<?php

      mysql_query
("select `column`  from `table_name`");
      
$rows mysql_num_rows($query);
      
mysql_query("select `column` from `table_name` LIMIT 0,$rows-2");
?>

ואת השאליתה השניה אתה מדפיס, בהצלחה.


זה לא חוקי לעשות "LIMIT 0,$rows-2" לפי איך שאני יודע...

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 680351)
בהנחה שיש לך מיליון שורות, 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)

לא עובד...

עוד שאלה:

עשיתי הצגה של 2 שורות מהמסד, כאשר השליפה ע"פ status ברגע ש status = 1 אז זה מציג אותם,
וברגע שיש מעל 2 ש status = 1 אז אני מעוניין שid הכי גבוהה ישתנה לו ה status = 0.

ככה שבסופו של דבר בכל השורות יכול להיות מצב שיהיו רק 2 status ששוים ל1.

מקווה שהבנתם, אני יודע שהסברתי את זה מסובך קצת...

Shon12 08-11-08 17:18

http://www.w3schools.com/sql/sql_func_max.asp ?:)

S-Preso 08-11-08 17:35

ציטוט:

נכתב במקור על ידי Shon12 (פרסם 680425)

לא הבנתי איך זה קשור?|Rolleyes|

vadimg88 08-11-08 18:33

זה בסדר להכניס פקודה חיסור בתוך שאילתה. אבל זה יהווה בעיה כשהערך $total יהיה שווה ל2 או פחות .

Shon12 08-11-08 18:49

אני לא מוצא סיבה שלהכניס פקודת חיסור לא תיהיה חוקית...
נסה את הקוד הבא(היה טעות בקוד הקודם):
PHP קוד:

<?php 

      $query 
mysql_query("select `column` from `table_name`"); 
      
$rows mysql_num_rows($query);
      
$res $rows-2;
      
mysql_query("select `column` from `table_name` LIMIT 0,$res");
?>

עוד דרך נחמדה בהנחה שהמספרים יהיו חד-ספרתיים קבוע - לספור את מספר המספרים(strlen) ולהוריד מהם 2 (substr).
בנוגע לבעיה של וואדים, אפשר לעשות תנאי שאם השורות קטנות מ-2 הקוד פשוט לא יתבצע,אוו abs(),אוו בודק אם יש תוצאה(mysql_result).

vadimg88 08-11-08 19:02

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

Shon12 08-11-08 19:12

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 680472)
פעולה פשוטה של חיסור או בדיקת הערך .

ציטוט:

נכתב במקור על ידי Shon12 (פרסם 680465)
בנוגע לבעיה של וואדים, אפשר לעשות תנאי שאם השורות קטנות מ-2הקוד פשוט לא יתבצע

-אני יודע שבקוד שלמעלה אין מאחת הבדיקות האלו, אני נתתי רעיונות - שהוא יממש אותם.


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

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