07-10-2006, 17:39
|
|
|
|
חבר מתאריך: 02.10.05
הודעות: 2,355
|
|
"שאילתה בתצוגת עיצוב" ממסד הנתונים אקסס, בתוך MySQL
שלום, אני כרגע בונה פורום עץ בשיטה הלינארית (סידור לפי עץ בצד-לקוח) בכל מקרה.. מצאתי מדריך אבל הוא ל-ASP ואקסס, אני עובד עם PHP ו- MySQL, עד כה הבנתי לא רע.. עד שהגעתי לחלק הזה:
ציטוט:
לאחר שהוספנו את העמודה נוסיף view שירכז לנו רק את ה-rootIdים שאנו צריכים View - שאילתא שנעשית במסד (לא ברמת ה-ASP) ומאפשרת לשמור נתונים מסוימים לעצמנו. את ה-view באקסס אנו יוצרים בכך שאנו נכנסים לקטגורייה queries ושם אנו בוחרים ב-"צור שאילתא בתצוגת עיצוב". לאחר שאנו יודעים מה זה view בואו ניצור אותו. אנו ניכנס לאפשרות של כתיבת SQL ונכתוב את השאילתא הבאה (נקרא ל-view שלנו fixedForum ) :
קוד:
SELECT forum.rootID, Max(forum.rootID) AS MAXrootID, Max(forum.msgDate) AS MAXmsgDate
FROM forum
GROUP BY forum.rootID
שאילתא הזו תחזיר לנו את כל ה-rootId הקיימים בטבלה שלנו.
עכשיו החלוקה לעמודים מתבצעת כך:
עמוד ראשון - 15 ההודעות הראשונות
עמוד שני - 15 ההודעות הראשונות שאחרי 15 ההודעות הראשונות
עמוד שלישי - 15 ההודעות הראשונות אחרי 30 ההודעות הראשונות
וכך הלאה...
עכשיו איך אנו מבצעים זאת? בעזרת ה-view ואופרטור in אנו נשלוף את כל ההודעות שה-rootId שלהם נמצא בין ה-15 הראשונים.
קוד:
SELECT forum.id, forum.parentId, forum.subject, forum.message
FROM forum
WHERE forum.rootId in (SELECT TOP 15 fixedForum.rootId
FROM fixedForum
ORDER BY fixedForum.MAXmsgDate DESC)
ORDER BY forum.id
אבל השאילתא הזו מתאימה אך ורק לעמוד הראשון בעמוד השני והלאה נצטרך לעשות עוד תת שאילתא שנשתמש בה עם שילוב האופרטורים not in
קוד:
SELECT forum.id, forum.parentId, forum.subject, forum.message
FROM forum
WHERE forum.rootId in (SELECT TOP 15 fixedForum.rootId
FROM fixedForum
WHERE fixedForum.rootId not in(
SELECT TOP (15 *x) fixedForum.rootId
FROM fixedForum
ORDER BY fixedForum.MAXmsgDate)
ORDER BY fixedForum. MAXmsgDate DESC
)
ORDER BY forum.id DESC
X הוא משתנה חיצוני המסמל את מספר העמוד בו אנחנו נמצאים
|
לקוח מ- http://www.webmaster.org.il/article.asp?id=149
כיצד ניתן לכתוב את אותם שאילתות לבסיס הנתונים MySQL?
_____________________________________
|