צפיות
תשובות
בעיה בחלוקה לדפים
אני מנסה לחלק את הדפים עפ"י המאמר של ניר טייב על פורום רקורסיבי.
הרעיון הוא שאני צריכה שלאחר שאני בוחרת קטגוריה מסויימת מהתפריט אני אקבל רשימה של חנויות ותהיה חלוקה לדפים.
את השאילתות בניתי בצורה הזו:
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 תשובות
תיקנתי את השאילתות אולם
כעת הוא מראה לי את אותם השניים כל הזמן, גם כאשר אני מעבירה דפים, למרות שאני רואה שה- 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&")"
לא מובן
לא הבנתי כל כך מה את מנסה לעשות…
דבר ראשון יש לך TOP 2 בכל מקרה בשאילתה הראשית
דבר שני לא כל כך ברור מה את מנסה לעשות,
את רוצה לצרף נתונים של חנות אחת לטבלה אחרת?
או שאת רוצה שהוא לא יציג לך נתונים שלא קיימים בחנות מסוימת?
מה שאני מנסה לעשות זה ככה
יש לי רשימה של חנויות ממוינות לפי קטגוריות.
יש לי שלוש טבלאות: טבלה של קטגוריות, טבלה של חנויות וטבלה שמקשרת בינהם.
אני רוצה שהוא יציג לי את רשימת החנויות שמתקבלות כשאני בוחרת קטגורייה אחת, אבל עם חלוקה לדפים.
לקחתי את המאמר של ניר טייב שבו הוא מסביר איך לעשות פורום רקורסיבי ולקחתי רק את הקטע של החלוקה לדפים.
בעיקרון בשאילתה הראשונה הוא בוחר את ה TOP * X כאשר X הוא מספר הדף. לשאילתה הזו אין יישום, כאשר הוא נמצא בדף הראשון אלא רק בדף השני (כמו שרואים בתנאי).
הוא מבצע את השאילתא השניה או השלישית ובהתאם לכך הוא לוקח את השאילתא הרביעית.
ברביעית הוא משתמש ב ID של הSHOP שהתקבל בשאילתא השניה או השלישית ולפי זה הוא מציג לי נתונים מטבלת החנויות.
הקטע הזה ועבד דווקא טוב, הבעיה היא שרק הדף הראשון עובד ובדף השני הוא לוקח את אותם השניים מהעמוד הראשון ולא מחליף אותם כשעוברים לעמוד השני או השלישי, למרות שה – X שמתקבל הוא נכון.
עוד משהו
בשאילתא הראשונה הוא בוחר TOP*X ואח"כ בשאילתא השלישית הוא בוחר TOP 2 , אבל שלא נמצאים בשאילתא הראשונה, כך שאם הוא בדף השני הוא יקח את השניים הבאים אחרי 4 הראשונים.
ניסית להשתמש בJOIN?
עם JOIN את יכולה לבחור קטגוריות ולצרף אליהן את פרטי החנות.
אני לא כל כך מבין למה בחרת בשתי שאילתות, יש לזה מטרה כל שהיא?
בשביל חלוקה לדפים
אני מקבלת את החנויות עם הפרטים שלהם, אבל כשאני עוברת לדף הבא זה אותן החנויות.