שלח תשובה

זירת השאלות

569
צפיות
6
תשובות

בעיה בחלוקה לדפים

,‏ 24 בינואר, 2006

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



If cat<>0 Then

set rsC=Server.CreateObject("ADODB.recordset")

sqlC="select * from CategShop where categoryID= " & cat  

rsC.Open sqlC,conn

response.write rsC("categoryID") & "<br>"


while not rsC.EOF

set rsS=Server.CreateObject("ADODB.recordset")

subSubQuery = " SELECT TOP "&(2 *x)&" shops.shopID FROM shops where ShopID= " & rsC("ShopID")

if x<=0 then
sqlS = "SELECT TOP 2 shops.shopID FROM shops where ShopID= " & rsC("ShopID")
else
sqlS = "SELECT TOP 2 shops.shopID FROM shops WHERE shopID not in (" & subSubQuery & ") and ShopID= " & rsC("ShopID")
END if

rsS.Open sqlS,conn

response.write rsS("ShopID") & "<br><HR>"

rsS.Close
set rsS=nothing

rsC.MoveNext
wend

rsC.Close
set rsC=nothing

End If


העניין הוא שהוא תמיד לוקח לי את כל הרושומות ולא רק את השניים האחרונים ואני לא מבינה למה.
אני שוברת את הראש כבר כמה ימים – יש למשהו מושג מה הבעיה?

תגיות:

6 תשובות

  1. דבשא הגיב:

    תיקנתי את השאילתות אולם
    כעת הוא מראה לי את אותם השניים כל הזמן, גם כאשר אני מעבירה דפים, למרות שאני רואה שה- X כן מתעדכן לפי הצורך.
    הנה קוד מעודכן:


    subSubQuery = " SELECT TOP "&(2 *x)&" categshop.shopid FROM categshop where categoryID= " & cat

    if x<=0 then
    subQuery = "SELECT TOP 2 categshop.shopid FROM categshop where categoryID= " & cat
    else
    subQuery = "SELECT TOP 2 categshop.shopid FROM categshop WHERE categoryID not in (" & subSubQuery & ") and categoryID= " & cat
    END if

    sqls ="select shops.shopname, shops.logo, shops.shopdetails FROM shops" &_
                 " WHERE shops.shopId in ("&subQuery&")"

  2. GreenBerret הגיב:

    לא מובן
    לא הבנתי כל כך מה את מנסה לעשות…

    דבר ראשון יש לך TOP 2 בכל מקרה בשאילתה הראשית

    דבר שני לא כל כך ברור מה את מנסה לעשות,
    את רוצה לצרף נתונים של חנות אחת לטבלה אחרת?
    או שאת רוצה שהוא לא יציג לך נתונים שלא קיימים בחנות מסוימת?

  3. דבשא הגיב:

    מה שאני מנסה לעשות זה ככה
    יש לי רשימה של חנויות ממוינות לפי קטגוריות.
    יש לי שלוש טבלאות: טבלה של קטגוריות, טבלה של חנויות וטבלה שמקשרת בינהם.
    אני רוצה שהוא יציג לי את רשימת החנויות שמתקבלות כשאני בוחרת קטגורייה אחת, אבל עם חלוקה לדפים.
    לקחתי את המאמר של ניר טייב שבו הוא מסביר איך לעשות פורום רקורסיבי ולקחתי רק את הקטע של החלוקה לדפים.
    בעיקרון בשאילתה הראשונה הוא בוחר את ה TOP * X כאשר X הוא מספר הדף. לשאילתה הזו אין יישום, כאשר הוא נמצא בדף הראשון אלא רק בדף השני (כמו שרואים בתנאי).
    הוא מבצע את השאילתא השניה או השלישית ובהתאם לכך הוא לוקח את השאילתא הרביעית.
    ברביעית הוא משתמש ב ID של הSHOP שהתקבל בשאילתא השניה או השלישית ולפי זה הוא מציג לי נתונים מטבלת החנויות.
    הקטע הזה ועבד דווקא טוב, הבעיה היא שרק הדף הראשון עובד ובדף השני הוא לוקח את אותם השניים מהעמוד הראשון ולא מחליף אותם כשעוברים לעמוד השני או השלישי, למרות שה – X שמתקבל הוא נכון.

  4. דבשא הגיב:

    עוד משהו
    בשאילתא הראשונה הוא בוחר TOP*X ואח"כ בשאילתא השלישית הוא בוחר TOP 2 , אבל  שלא  נמצאים בשאילתא הראשונה, כך שאם הוא בדף השני הוא יקח את השניים הבאים אחרי 4 הראשונים.

  5. GreenBerret הגיב:

    ניסית להשתמש בJOIN?
    עם JOIN את יכולה לבחור קטגוריות ולצרף אליהן את פרטי החנות.

    אני לא כל כך מבין למה בחרת בשתי שאילתות, יש לזה מטרה כל שהיא?

  6. דבשא הגיב:

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

שלח תשובה