עוד שאלה על פורום...

freak2100

New member
עוד שאלה על פורום...

האמת היו לי שתי שאלות, אחת פשוט פתרתי תוך כדי כתיבת ההודעה
אז ככה, כשמוסיפים הודעה חדשה, גם לפי מה שהבנתי מדגון וגם כי זה דווקא מסתדר לי מעולה בראש, הrootID מקבל את הID, ואני חושב שהכי יעיל שהID יהיה מספור אוטומטי (נכון?). אז השאלה היא: איך משלבים את זה?? כי הדרך היחידה שעולה לי לראש היא insert להודעה, ואז select להודעה בשביל לראות מה הID שלה ואז update כדי להכניס את זה לrootID... מה השיטה הנכונה לעשות את זה, בלי להרוס את כל הפורום רק על השטות הזאת?
 
כמו שאמרת..

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

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

קשרי גומלין? אפשר לעשות גם שהוא יקבל ערכים תלויים או 0 למשל?
 
OK :/

רציתי להסתייג מזה באיזה מקרה והוחלט ליצור שדה (נניח הראשון) בטבלה השניה, שהערך שלו הוא נניחו "לא זמין" או משהו... אני מבין שזו האופציה היחידה..
 

freak2100

New member
לא, זה לא טוב

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

freak2100

New member
תראי...

במקום השליפה שדגון הציע:
select MsgId,MsgRootId,MsgTitle,MsgAuthor,MsgDate,MsgContent from Messages where MsgRootId in (select top 10 MsgId from Messages where MsgId=MsgRootId order by MsgDate desc) order by MsgDate desc​
החלטתי לעשות משהו כזה, שתהיה הקפצת הודעות:
select MsgId,MsgRootId,MsgTitle,MsgAuthor,MsgDate,MsgContent from Messages where MsgRootId in (select distinct top 10 MsgRootId from Messages order by MsgDate desc) order by MsgDate desc​
ואם אני אכניס לrootID של הודעות ראשיות 0, זה לא יעבוד.... וגם אם אני רוצה לשלוף שירוש שלם יותר נח פשוט לשלוף רק לפי rootID, אבל כמובן שאת זה אפשר לעשות בדרך אחרת אז מה אני עושה בשביל שתהיה הקפצת הודעות?
 
אני בזמנו עשיתי VIEW כזה:

SELECT tbl1.*, tbl2.maxDate FROM (SELECT rootID, MAX([date]) AS maxDate FROM tblMsgs GROUP BY rootID ORDER BY [date]) AS tbl1, tblMsgs AS tbl2 WHERE tbl1.rootID=tbl2.rootID ORDER BY tbl2.maxDate​
משהו כזה... ואז זה כבר כל הטבלה מסודרת לפי השרשורים (כשהם מבולגנים)...
 

freak2100

New member
בלבלת אותי לגמרי

מה שאני צריך זה פשוט שהrootID יקבל את הערך של הID בצורה הכי יעילה שאפשר זה הכל
 

freak2100

New member
למרות שזה עדיין לא עבר עמוד...

זה יעבור עמוד ממש בקרוב (הודעה אחרונה בעמוד) אז אני מקפיץ - הקפצה לפני השניה.... לילה טוב
 

freak2100

New member
האם זאת דרך

יעילה
במקום להשתמש בinsert לעשות addNew ואז לתת לעמודה של הrootID את הערך של ID יש דרך יעילה יותר
(הפתרון של admini בICQ) המטרה שלי בבניית הפורום הזה היא יעילות, אז אני מחפש את הדרך הכי יעילה....
 

freak2100

New member
אוקיי, xyxyxy אמר לי

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