ארכיון תגיות: sql

שאילתא שמוצאת רשומות שבהן המפתח הזר לא קיים בטבלת המקור

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

הצורה הכי פשוטה ( בעיני ) היא כך

SELECT * FROM doc_recive where dr_id not in (SELECT dr_id from doctors where doctors.dr_id=doc_recive.dr_id)

יש כל מיני טכניקות לעשות את השאילתות האלו יותר יעילות

אפשר להשתמש ב-Not Exists , או ב Is null

ולמי שרוצה להתעמק – יש בקישור הזה השוואה

 

תובנות לגבי CREATE TABLE באמצעות ADO / ADODB , מול ACCESS DATABASE

כמה תובנות לגבי CREATE TABLE באמצעות ADO / ADODB , מול ACCESS DATABASE

1. המילה user היא מילה שמורה ב-ADO , למרות ש-ACCESS כן מתיר שמות כאלו לשדות, ADO לא מרשה.

2. אפשר לשלוח שאילתות עם מפתחות ראשיים ומפתחות זרים, אבל זה לא יכול להיות באותה פקודה

חייבים להפריד את ה-CREATE TABLE מיצירת המפתחות.

כלומר אפשר ליצור מפתחות – באמצעות ALTER וכו'…

איך עושים Join של 2 שדות מאותה טבלת מקור

שלום,
היה לי מקרה שבו
שדות מוצא+יעד היו מאותה טבלת מקור

ב-MySql עושים זאת כך :
1. אחרי הפסוקית Inner Join רושמים את שם הטבלה המקורית…רווח… ואז כינוי יחודי
כלומר,
במקרה שלנו , במשפט Inner Join הראשון הענקתי כינוי יחודי מסוים
ובמשפט Inner Join השני – הענקתי כינוי מסוים ***שונה***
2. אחרי הפסוקית ON, משתמשים בכינוי היחודי מהסעיף הקודם (בטבלה שאחרי הסימן = כמובן).
3. גם ברשימת השדות לתצוגה , משתמשים בכינויים היחודיים (ולא בשם הטבלה המקורי)
4. אחרי שם העמודה ברשימת השדות, צריך לתת לכל עמודה כינוי יחודי
אומנם ה-MySql WorkBench יודע להציג זאת, אבל אם תנסו להחזיר נתונים ב-php וכדומה …. זה יהיה בעיה
אם יהיו 2 עמודות עם אותו השם.

להלן דוגמא :

SELECT 
    t.travel_id,
    t.travel_date,
    t.travel_time,
    tbl_customers.company_name,
    t.travel_box
	,tbl_lines.line_name
	,t.customer_name
	,t.quantity
	,f1.location from1
	,t1.location to1

FROM
    tbl_travels t
        INNER JOIN tbl_customers
		ON t.company_id = tbl_customers.customer_id
        INNER JOIN tbl_lines
		ON t.line_id= tbl_lines.line_id
        INNER JOIN tbl_locations f1
		ON t.`from`= f1.location_id 
		INNER JOIN tbl_locations t1
		ON t.`to`= t1.location_id