06-02-2006, 11:20
|
|
|
חבר מתאריך: 29.01.06
הודעות: 8
|
|
למרות חיפוש שעשיתי...שאילת SQL - עזרה
אני מתחיל את האשכול הזה בכך שאתמול העברתי כמה שעות בחיפוש בגוגל ובפורום כדי לחפש תשובה לשאלה שעל פניו היא די בסיסית ופשוטה ואין לי מושג למה אני מסתבך עם זה כל כך. אבל רק שתדעו שלא ישר פרסמתי אשכול בפורום.
יש לי באתר דף מנוע חיפוש שבניתי כאשר יש את הדף הראשון עם FORM שמכיל גם Drop LIST לצורך בחירת קטגוריית חיפוש ולאחר מכן TEXT BOX לצורך הכנסת מפתח החיפוש (KEYWORD).
הדף השני שמקבל את הנתונים הנ"ל ובעצם מבצע חיפוש ב-Database - SQL server 2000 לאחר פתיחת המסד יש משפט CASE SELECT עבור REQUEST.FORM לשדה הקטגוריה מהדף הראשון שבעצם מתאים שאילתת SELECT בהתאם לקטגוריית החיפוש שנבחרה.
סה"כ הכל עובד כמו שצריך חוץ מדבר אחד:
יש בעיה של תווים. ישנן במסד הנתונים שלי שלוש עמודות שבעצם מכילות סוגים שונים של מספרים סריאליים. המספרים הסריאליים לא מורכבים ממספרים בלבד אלא משילוב של אותיות ותוים מסוג "-".
כשאני מבצע חיפוש מק"ט שמכיל שילוב כזה תוצאות החיפוש מוחזרות כ"לא נמצא" דהיינו הוא לא מאתר את אותן רשומות במסד. למרות שאם עושים הצגה של כל הרשומות במסד הוא מציג את אותן רשומות המכילות כל מיני תווים. במסד אותן עמודות מוגדרות כ- VARCHAR.
אני חושב שהבעיה היא במשפט ה-SELECT שאני משתמש.
משפט לדוגמא:
case OEM NUMBER
SQL = "select * from products where oem_num = '"&keyword&"' "
הערך שלפיו נעשה החיפוש הוא ES-425R
אם מישהו יוכל לתת לי פה איזשהו כיוון למה נעשה פה לא בסדר אני מאוד מאוד אודה לכם.
שאלה נוספת היא:
איך אני מנסח בדיוק משפט SELECT שבו אני רוצה לקבל תוצאות שדומות למילת מפתח החיפוש ולא שוות לו. דהיינו:
SELECT * From products where vehicle like '"&keyword&"' "
או לחלק מהערך שמכיל המשתנה KEYWORD דהיינו:
אם הערך שמכיל KEYWORD הוא PONTIAK אבל הערך האמיתי של הרכב הוא PONTIAC.
או שהמשתמש הקיש בחיפוש את הערך BALL JOINT אבל יש רשומות שמכילות ערך BALL JOINT LOWER או BALL JOINT UPPER ואני רוצה שהמשתמש יקבל גם אותן תחת אותו מפתח חיפוש שהקיש.
שוב, המון תודה לכל הקוראים והעוזרים.
MARLBORO MAN
|