עבור לתוכן

שאלה על שליפה בSQL

Featured Replies

פורסם

שלום רב,

התחלתי ללמוד ולעבוד קצת בSQL ויש לי שאלה:

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

איך אני יכול לשלוף על הערכים ב"וגם"?

דוגמא לטבלה:

[TABLE=class: grid, width: 500, align: center]

[TR]

[TD]ID

[/TD]

[TD]ערך

[/TD]

[/TR]

[TR]

[TD]1

[/TD]

[TD]לבן

[/TD]

[/TR]

[TR]

[TD]1

[/TD]

[TD]כחול

[/TD]

[/TR]

[TR]

[TD]1

[/TD]

[TD]שחור

[/TD]

[/TR]

[TR]

[TD]2

[/TD]

[TD]שחור

[/TD]

[/TR]

[/TABLE]

שליפה:

שלוף את כל הID שהערכים שלהם שווים שחור וגם כחול.

תשובה ID 1

השאלה השניה: איך אני יכול לקחת אחר כך לקחת את תוצאות השליפה ולהעביר אותם לשליפה אחרת.

תודה מראש על העזרה.

ערן.

פורסם

1. כמובן שיש המון דרכים לעשות זאת. דרך אחת היא לבחור את ID שהערך שלו כחול וגם שנמצא בשליפה אחרת שהיא בחירת ה-ID שהערך שלו שחור.

2. ביצוע שאילתא מקוננת זה דבר בסיסי. הנה דוגמה:

select ID
from items
where value == 'black'
AND ID in (select ID
from items
where value == 'blue')

אל תתפוס אותי על הסינטקסט, שנים לא נגעתי בזה...

פורסם
  • מחבר

תודה רבה גיל, עובד מעולה,

אך יש לי שאלה נוספת:

זו השליפה שלי (שמבוססת על שלך):


select genres.imdb_id, movies.title,movies.rating,genres.genre
from moviesdb.genres
inner join moviesdb.movies
on movies.imdb_id = genres.imdb_id
where genre = 'drama'
AND genres.imdb_id in (select genres.imdb_id
from genres
where genres.genre = 'thriller')
AND movies.imdb_id in (select movies.imdb_id
from movies
where movies.rating >=8 or null)

תוצאה לדוגמא:

tt0102926 The Silence of the Lambs 8.7 Drama

tt0110912 Pulp Fiction 9 Drama

tt0119488 L.A. Confidential 8.4 Drama

tt0167404 The Sixth Sense 8.2 Drama

tt0327056 Mystic River 8 Drama

הבעיה הינה שהוא מציג רק genre אחד, הראשון שחיפשתי ולא את כל הג'נרים שתחת אותו ID. כיצד ניתן להתמודד עם הבעיה? האם ניתן להציג את כל הג'נרים באותו תא (כולל הג'נרים שלא חיפשתי)?.

אני פשוט חלש וחדש מאד בSQL

ושוב תודה, ערן.

נערך על-ידי eran256

פורסם

כי זה מה שחיפשת. השאילתא שלך שולפת רק את ה-genre מסוג drama וזאת בתנאי שהוא מקיים את התנאים האחרים.

אם אתה רוצה לשלוף אחרים, תוסיף תנאי or למה שאתה שולף בשאילתה החיצונית.

פורסם
  • מחבר

אבל אני כן מעוניין שהם יהיו גם דרמה וגם מתח...

ואם אני אוסיף or אני אפספס את הפואנטה לא? (או שלא ירדתי לסוף דעתך)

תודה, ערן.

פורסם

השורה where genre = 'drama' קובעת שהתוצאות שיוצגו יהיו רק כאלה שכוללים את הערך drama תחת העמודה genre.

פורסם
  • מחבר

תודה רבה על העזרה,

הבנתי ופתרתי את הבעיה, האם ניתן לאחד כל כל הג'נרים לשורה אחת בתצוגה? ולא כך:

[TABLE]

[TR]

[TD]tt0102926

[/TD]

[TD]The Silence of the Lambs[/TD]

[TD]8.7[/TD]

[TD]Crime[/TD]

[/TR]

[TR]

[TD]tt0102926[/TD]

[TD]The Silence of the Lambs[/TD]

[TD]8.7[/TD]

[TD]Drama[/TD]

[/TR]

[TR]

[TD]tt0102926[/TD]

[TD]The Silence of the Lambs[/TD]

[TD]8.7[/TD]

[TD]Thriller[/TD]

[/TR]

[TR]

[TD]tt0110912[/TD]

[TD]Pulp Fiction[/TD]

[TD]9[/TD]

[TD]Crime[/TD]

[/TR]

[TR]

[TD]tt0110912[/TD]

[TD]Pulp Fiction[/TD]

[TD]9[/TD]

[TD]Drama[/TD]

[/TR]

[TR]

[TD]tt0110912[/TD]

[TD]Pulp Fiction[/TD]

[TD]9[/TD]

[TD]Thriller[/TD]

[/TR]

[/TABLE]

הייתי רוצה שהוא יציג

[TABLE]

[TR]

[TD]tt0102926

[/TD]

[TD]The Silence of the Lambs[/TD]

[TD]8.7

[/TD]

[TD]Crime,drama,thriller

[/TD]

[/TR]

[/TABLE]

פורסם
  • מחבר

מישהו יודע לעזור לי?

תודה מראש, ערן.

פורסם

לא בדיוק כמו שתיארת אבל עם עמודות שונות לכל genre (למשל genre 1, genre2 וכולי).

תיזכר בפעולות של מכפלה קרטזית \ join

פורסם
  • מחבר

אני לא מספיק מכיר ויודע SQL, חיפשתי קצת באינטרנט ולא כל כך מצאתי, אשמח אם תוכל לעזור לי עוד קצת...

תודה

פורסם

תמשיך לתרגל ולחזור על החומר, אנחנו לא מתכוונים לפתור לך את התרגילים.

לפחות תתחיל עם משהו וננסה להכווין אותך.

פורסם
  • מחבר

חחח אוקיי

אף על פי שזה לא תרגול אלא משהו שאני מנסה לפתח בעצמי וללמוד לבד. לא תרגול של אוניברטיסה/בית ספר.

אתם יכולים למקד אותי לנושא הרלוונטי?

נערך על-ידי eran256

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים