בולנט - דברים מיוחדים...     פרוטו - בניית אתרים

Israeli ASP Organization

ארגון ה-ASP הישראלי

מאמרים/דוגמאות קוד
קישורים
ספרות
חיפוש כללי:

חפש!
כלליHTMLASPASP.NETSQLמסדי נתוניםJavaScriptXML * XSLDHTML * CSSעיצוב וגרפיקהשרתיםComponentsפרסום ושיווקקידום אתריםקופירייטינגPHP
פרסומת
דף ראשי מדורים דרושים הרשמה למועדון אודותינו צור קשר
מיקום: מאמרים ודוגמאות קוד > SQL

SQL - Select

מתן הוראה למנגנון מסד הנתונים Jet של Microsoft להחזיר מידע ממסד הנתונים כערכת רשומות.

תחביר

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}‎ FROM tableexpression [, ...] [IN externaldatabase]‎ [WHERE... ]‎ [GROUP BY... ]‎ [HAVING... ]‎ [ORDER BY... ]‎ [WITH OWNERACCESS OPTION]‎

משפט SELECT כולל את החלקים הבאים:

חלקתיאור
predicateאחד מהפרדיקאטים הבאים: ALL‏, DISTINCT‏, DISTINCTROW או TOP. השימוש בפרדיקאט נעשה כדי להגביל את מספר הרשומות המוחזרות. אם לא מצויינת כל רשומה, ברירת המחדל היא ALL.
* ציון כי כל השדות של טבלה או טבלאות שצויינו נבחרו.
tableשם הטבלה המכילה את השדות מתוכם נבחרות רשומות.
field1‏, field2שמות השדות המכילים את הנתונים אותם ברצונך לאחזר. אם תכלול יותר משדה אחד, הנתונים יאוחזרו לפי הסדר הרשום.
alias1‏, alias2השמות בהם יש להשתמש ככותרות עמודה במקום שמות העמודה המקוריים תחת table.
tableexpressionשם הטבלה או הטבלאות המכילות את הנתונים אותם ברצונך לאחזר.
externaldatabaseהשם של מסד הנתונים המכיל את הטבלאות ב- tableexpression אם הן אינן במסד הנתונים הנוכחי.



הערות

לשם ביצוע פעולה זו, מנגנון מסד הנתונים Microsoft®‎ Jet מבצע חיפוש בטבלה או בטבלאות שצויינו, מחלץ את העמודות הנבחרות, בוחר שורות המתאימות לקריטריון וממיין או מקבץ את השורות שהתקבלו מפעולה זו לפי הסדר שצויין.

משפטי SELECT אינם משנים נתונים במסד הנתונים.

SELECT היא בדרך כלל המילה הראשונה במשפט SQL. רוב משפטי SQL הם משפטי SELECT או SELECT...INTO.

התחביר המינימלי עבור משפט SELECT הוא:

SELECT fields FROM table באפשרותך להשתמש בכוכבית ‏(*) לשם בחירת כל השדות בטבלה. בדוגמה הבאה נבחרים כל השדות בטבלה Employees: SELECT * FROM Employees;‎ אם שם שדה כלול ביותר מטבלה אחת בפסוקית FROM, מקם לפניו את שם הטבלה ואת האופרטור . ‏(נקודה). בדוגמה הבאה, השדה Department נמצא הן בטבלה Employees והן בטבלה Supervisors. משפט SQL בוחר מחלקות מהטבלה Employees ושמות מפקחים מהטבלה Supervisors: SELECT Employees.Department, Supervisors.SupvName FROM Employees INNER JOIN Supervisors WHERE Employees.Department = Supervisors.Department;‎ בעת יצירת אובייקט Recordset, משתמש מנגנון מסד הנתונים Jet של Microsoft בשם השדה של הטבלה כשם האובייקט Field באובייקט Recordset. אם דרוש לך שם שדה אחר או אם לא מצויין שם על-ידי הביטוי המשמש ליצירת השדה, השתמש במילה שמורה מסוג AS. בדוגמה הבאה נעשה שימוש בכותרת Birth לשם מתן שם לאובייקט Field המוחזר באובייקט Recordset המתקבל מפעולה זו: SELECT BirthDate AS Birth FROM Employees;‎ בכל עת בה נעשה שימוש בפונקציות צבירה או בשאילתות המחזירות שמות אובייקט Field דו-משמעיים או כפולים, עליך להשתמש בפסוקית AS כדי לספק שם חלופי עבור אובייקט Field. בדוגמה הבאה נעשה שימוש בכותרת HeadCount לשם מתן שם לאובייקט Field המוחזר באובייקט Recordset המתקבל מפעולה זו: SELECT COUNT(EmployeeID) AS HeadCount FROM Employees;‎ באפשרותך להשתמש בפסוקיות נוספות במשפט SELECT כדי להגביל ולארגן במידה מרובה יותר את הנתונים המוחזרים. לקבלת מידע נוסף, עיין בנושא העזרה עבור הפסוקית בה אתה משתמש.

דוגמה למשפט SELECT, פסוקית FROM

כמה מן הדוגמאות להלן מניחות את קיומו של שדה היפותטי Salary בטבלה Employees. שים לב כי שדה זה אינו קיים למעשה בטבלה Employees של מסד הנתונים Northwind.

דוגמה זו יוצרת Recordset מסוג קבוצת רשומות דינאמיות המתבססת על משפט SQL שבוחר את השדות LastName ו- FirstName בכל הרשומות בטבלה Employees‏. דוגמה זו שולחת קריאה לפרוצדורה EnumFields‏, אשר מדפיסה את תוכנו של אובייקט Recordset לחלון Debug.

Sub SelectX1() Dim dbs As Database, rst As Recordset ' Modify this line to include the path to Northwind ' on your computer. Set dbs = OpenDatabase("Northwind.mdb") ' Select the last name and first name values of all ' records in the Employees table. Set rst = dbs.OpenRecordset("SELECT LastName, " _ & "FirstName FROM Employees;") ' Populate the recordset. rst.MoveLast ' Call EnumFields to print the contents of the ' Recordset. EnumFields rst,12 dbs.Close End Sub דוגמה זו סופרת את מספר הרשומות שיש להן ערך בשדה PostalCode ומכנה את השדה החוזר Tally. Sub SelectX2() Dim dbs As Database, rst As Recordset ' Modify this line to include the path to Northwind ' on your computer. Set dbs = OpenDatabase("Northwind.mdb") ' Count the number of records with a PostalCode ' value and return the total in the Tally field. Set rst = dbs.OpenRecordset("SELECT Count " _ & "(PostalCode) AS Tally FROM Customers;") ' Populate the Recordset. rst.MoveLast ' Call EnumFields to print the contents of ' the Recordset. Specify field width = 12. EnumFields rst, 12 dbs.Close End Sub דוגמה זו מציגה את מספר העובדים ואת המשכורות הממוצעות והמקסימליות. Sub SelectX3() Dim dbs As Database, rst As Recordset ' Modify this line to include the path to Northwind ' on your computer. Set dbs = OpenDatabase("Northwind.mdb") ' Count the number of employees, calculate the ' average salary, and return the highest salary. Set rst = dbs.OpenRecordset("SELECT Count (*) " _ & "AS TotalEmployees, Avg(Salary) " _ & "AS AverageSalary, Max(Salary) " _ & "AS MaximumSalary FROM Employees;") ' Populate the Recordset. rst.MoveLast ' Call EnumFields to print the contents of ' the Recordset. Pass the Recordset object and ' desired field width. EnumFields rst, 17 dbs.Close End Sub הפרוצדורה Sub EnumFields מעבירה אובייקט Recordset מן הפרוצדורה המבצעת קריאה. לאחר מכן, הפרוצדורה מעצבת ומדפיסה את השדות של אובייקט Recordset אל חלון Debug. המשתנה intFldLen הוא רוחב השדה המודפס המבוקש. ייתכן כי מספר שדות ייחתכו. Sub EnumFields(rst As Recordset, intFldLen As Integer) Dim lngRecords As Long, lngFields As Long Dim lngRecCount As Long, lngFldCount As Long Dim strTitle As String, strTemp As String ' Set the lngRecords variable to the number of ' records in the Recordset. lngRecords = rst.RecordCount ' Set the lngFields variable to the number of ' fields in the Recordset. lngFields = rst.Fields.Count Debug.Print "There are " & lngRecords _ & " records containing " & lngFields _ & " fields in the recordset." Debug.Print ' Form a string to print the column heading. strTitle = "Record " For lngFldCount = 0 To lngFields - 1 strTitle = strTitle _ & Left(rst.Fields(lngFldCount).Name _ & Space(intFldLen), intFldLen) Next lngFldCount ' Print the column heading. Debug.Print strTitle Debug.Print ' Loop through the Recordset; print the record ' number and field values. rst.MoveFirst For lngRecCount = 0 To lngRecords - 1 Debug.Print Right(Space(6) & _ Str(lngRecCount), 6) & " "; For lngFldCount = 0 To lngFields - 1 ' Check for Null values. If IsNull(rst.Fields(lngFldCount)) Then strTemp = "<null>" Else ' Set strTemp to the field contents. Select Case _ rst.Fields(lngFldCount).Type Case 11 strTemp = "" Case dbText, dbMemo strTemp = _ rst.Fields(lngFldCount) Case Else strTemp = _ str(rst.Fields(lngFldCount)) End Select End If Debug.Print Left(strTemp _ & Space(intFldLen), intFldLen); Next lngFldCount Debug.Print rst.MoveNext Next lngRecCount End Sub



         

מחבר: אדם ליבסקירמת קושי: 1  ||  עוד לא דורגכל הזכויות שמורות ל-IAO ©

חנות לסטלן  |   מתכונים  |   חגי ישראל  |   פורטל משחקים  |   חנויות מחשבים ו-ציוד הקפי  |   מגזין מסטול לסטלן המצוי  |   קליפרים  |   גידול צמחים פרחים  |   ספא פינוק מושלם