קיימות
SQL#והפעם- בואו נדבר על exists/not exists
הבעיה שלנו היא ש…
קיימת לנו טבלה שבשורות שונות יופיעו נתונים שונים עבור אותו פרט, ואנחנו רוצים לדעת האם מתקיים גם x וגם y (או לא x ולא y) עבור אותו הפרט.
הטיפ שלי
נשתמש בפקודה exists/not exists.
בואו ננסה את זה בפועל
הטבלה שלנו:
potential_love:
name | answer |
---|---|
Yogev | M |
Batel | F |
Shiri | F |
Liran | M |
Zukit | F |
Dudu | M |
Yogev | single |
Dudu | single |
Liran | single |
Shiri | single |
Batel | taken |
Zukit | taken |
בטבלה מוצגים אנשים ונשים שענו על 2 שאלות, מה המגדר שלהם והאם הם פנויים או תפוסים. הנתונים מוצגים כך שכל אדם מופיע ב-2 שורות נפרדות. פעם עם התשובה לשאלה הראשונה ופעם עם התשובה לשאלה השניה. המטרה שלנו היא ליצור טבלה שתציג את כל האפשרויות לזוגות הפוטנציאלים, לשם כך נרצה שבעמודה אחת יופיעו שמות הגברים הפנויים ובעמודה השניה שמות הנשים הפנויות. וכמובן בכל הצירופים האפשריים, כלומר כל גבר עם כל אחת מהנשים ולהפך.
הפקודות שנבצע:
תוצאה:
man | woman |
---|---|
Yogev | Shiri |
Dudu | Shiri |
Liran | Shiri |
בעצם יצרנו טבלה אחת בה נכללים שמות כל הגברים הפנויים, וטבלה שניה בה נכללים שמות הנשים הפנויות, באמצעות פקודת ה-cross join יצרנו את כל הצירופים האפשריים ביניהם. כלומר, כל הזוגות הפוטנציאלים. פקודת הexists איפשרה לנו לבחור גם בכל הגברים וגם בכל הפנויים (או גם בכל הנשים וגם בכל הפנויות) על אף שהמידע נמצא באותה עמודה ובשורות נפרדות.