@צבי-ש
אולי כדאי ליצור את המסד נתונים קצת אחרת-
טבלה1 - ID פלאפון
טבלה2 - (שני השדות הראשונים הם מפתח משולב) תכונה, מספור, סוג ערך מתאים (הטקסט שיופיע)
טבלה 3 - (שלוש השדות הם מפתח משולב) ID פלאפון ( = מפתח זר של טבלה 1), תכונה, מספור ( = שני השדות מפתח זר של טבלה 2)
טבלה 4 - ID לקוח
טבלה 5 - (שלוש השדות הם מפתח משולב) ID לקוח ( = מפתח זר של טבלה 4) , תכונה, מספור ( = שני השדות מפתח זר של טבלה 2)
וכעת ניתן בקלות להשיג את המידע.
(אני כותב את אלגוריתם השאילתה בעברית)
שלב 1.
ליצור שאילתה לחיפוש ID פלאפון שוודאי לא תואם מחמת שלא עונה על אחת הדרישות:
(SELECT) לבחור את השדות ID פלאפון , ID לקוח
(FROM) להביא את טבלאות 2,4 (תכונה בטבלה 3 LEFT JOIN לתכונה בטבלה 5)
(WHERE) בתנאי ש: אם שדה מספור בטבלה 3 קטן מהמספור בטבלה 5 - או - אחת השדות בטבלה 5 ריקה (IS NULL)
לקנן או לשמור בשם את השאילתה הזו כ'לא מתאים'.
שלב 2.
עכשיו ליצור שאילתה לחיפוש ID לקוח שכן מתאים:
לבחור את השדות ID פלאפון , ID לקוח
להביא את שאילתה לא מתאים ,טבלה 4 (טבלה 4 LEFT JOIN שאילתה לא מתאים)
בתנאי ש: אם שדה ID פלאפון בשאילתה לא מתאים ריק (IS NULL)
נ.ב. טבלה 1 וטבלה 4 לא נצרכים לשאילתה, רק עוזר שלא תצטרך ליצור כל הזמן שאילתה מסוג SELECT DISTINCT וימהר את החיפוש כי יש כבר אינדקס.