לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 11-08-2005, 13:46
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
לא הבנתי
בתגובה להודעה מספר 1 שנכתבה על ידי ישראל K שמתחילה ב "בדיקה אם ערך קיים בשדה"

אתה שואל אם אפשר לשלוף מידע מטבלה בלי לבצע שאילתא על הטבלה?

אני מניח שבעזרת Log Mining תוכל לאתר את הפעולה שביצעה את הכנסת הערך... אבל זה מסובך למדי ותלוי מאוד במסד הנתונים הספציפי שבו אתה משתמש.

השאילתא הכי פשוטה שתבדוק עם ערך קיים היא זו:
קוד:
select distinct 1 from EMP where ENAME='SMITH';


תקבל 1 עם הערך קיים או שלא תקבל ערכים בכלל אם הוא אינו קיים.

---עריכה:

ישנה אפשרות נוספת כמובן...

אם השדה שאתה מעוניין לבדוק הוא ייחודי (Unique) אתה יכול לנסות לבצע INSERT לטבלה ולראות אם קיבלת שגיאה.

לפעמים אפשרות זו מהירה יותר (במיוחד אם אתה מעוניין שהערך יהיה בטבלה בסוף הפעולה)
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה


נערך לאחרונה ע"י המממ בתאריך 11-08-2005 בשעה 13:50.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 11-08-2005, 21:24
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
בסדר...
בתגובה להודעה מספר 3 שנכתבה על ידי ישראל K שמתחילה ב "אני מדבר על mysql נסיתי לחפש..."

קודם כל, בדקתי בדוקומנטציה של MySQL והתחביר של ה- SELECT שנתתי תואם
http://dev.mysql.com/doc/mysql/en/select.html

הנה ההסבר:
The ALL, DISTINCT, and DISTINCTROW options specify whether duplicate rows should be returned. If none of these options are given, the default is ALL (all matching rows are returned). DISTINCT and DISTINCTROW are synonyms and specify that duplicate rows in the result set should be removed.

בפורום התמיכה שלהם הציעו למישהו להשתמש ב GROUP BY במקום DISTINCT
קוד:
SELECT date FROM log GROUP BY date


אבל לאור האופטימיזציה ש MySQL מבצע על DISTINCT יש לי תחושה שזו לא חלופה מומלצת.
(ראה הסבר כאן )

אגב, אם הערכים של שם המשתמש אצלך הם ייחודיים אין לך צורך ב DISTINCT משום שבכל מקרה תקבל מקסימום ערך אחד.

לכן השאילתא שלך צריכה להיות משהו כזה:
קוד:
SELECT un FROM users_table WHERE un='username'

ואז פשוט תבדוק כמה ערכים קיבלת (0 = אין שם כזה, 1=יש שם כזה, יותר מאחד... משהו לא בסדר במסד התונים שלך)

כמובן שאתה יכול להשתמש ב (SELECT count(un אבל בשביל ערך אחד, למה לגרום למסד הנתונים לעבוד קשה
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה


נערך לאחרונה ע"י המממ בתאריך 11-08-2005 בשעה 21:29.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 11-08-2005, 21:42
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
בתגובה להודעה מספר 3 שנכתבה על ידי ישראל K שמתחילה ב "אני מדבר על mysql נסיתי לחפש..."

אחרי שכבר כתבתי את כל המגילה ראיתי שהמממ הגיב אז למרות הכל - חבל על כל מה שכתבתי...

האפשרות של distinct בשאילתת SELECT מאפשרת לך לקבל בתוצאת הבחירה רק ערכים שונים. כלומר - אם יש לך בעמודה name למשל 5 שמות, שמתוכם 3 הם אותו שם, ואתה מבצע `SELECT DISTINCT `name על הטבלה המדוברת תקבל רק 3 רשומות (במקום 5, כיוון שיש 2 שכבר יש לך מופע שלהן).
כפי שהמממ כתב לך כבר, אין לך אפשרות לדעת משהו על הנתונים הנמצאים בטבלה מבלי לבצע SELECT (או להשתמש ב SP, אולם גם כאן יהיה לך SELECT, אחרת לא תוכל לדעת שום דבר על הערכים הקיימים בטבלה).
על מנת לדעת לבדוק האם המילה "שלום" קיימת במסד אתה יכול לבחור 1 עבור כל הרשומות (שורות) שעבורן מתקיימת השאילתא. לאחר מכן "נוותר" על הרשומות כפולות באמצעות DISTINCT, ולכן נקבל רשומה אחת במידה ויש רשומות המכילות "שלום", או 0 רשומות במידה והמילה "שלום" לא מופיעה בטבלה, בעמודות בהן אתה מחפש. (זה בעצם הסבר לשאילתא שהמממ כתב לך בתגובה שלו).
שים לב כי במידה ואתה רוצה לבצע חיפוש בתוך טקסט (ולא שיוויון) אתה יכול להשתמש ב LIKE.
אינפורמציה נוספת:
מבנה של סלקט באופן כללי - http://www.w3schools.com/sql/sql_select.asp (שים לב שיש גם תת פרק על DISTINCT).
מתוך המניואל של mysql - שים לב לדיסטאינקט - http://dev.mysql.com/doc/mysql/en/select.html
אינפורמציה נוספת אודות http://www.w3schools.com/sql/sql_where.asp - LIKE
או ישירות מתוך המניואל של http://dev.mysql.com/doc/mysql/en/pattern-matching.html - mysql

בברכה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"


נערך לאחרונה ע"י דקל בתאריך 11-08-2005 בשעה 21:57.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:56

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר