הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה בשאילתת SQL (https://hosts.co.il/forums/showthread.php?t=69459)

Shay-A 15-11-08 13:43

עזרה בשאילתת SQL
 
אוקיי יש לי טבלה, עם שלושה עמודות
id | DownloadID | CategoryID
זאת בעצם טבלה שמקשרת בין טבלת ה Download לבין טבלת ה Category.
ואני צריך לשלוף עכשיו רק את ה DownloadID שנמצא תחת קטגוריה מסויימת...
אז במקרה כזה אני עושה WHERE CategoryID='$id'...
אבל אני צריך לשלוף תוצאות שנמצאות תחת כמה קטגוריות שונות...
נגיד יש לי את הנתונים הבאים:
3 | 1 | 1
4 | 1 | 2
כאילו DownloadID מספר 1 משתייך גם לקטגוריה 3 וגם לקטגוריה 4... עכשיו אני צריך שאילתה שתשלוף לי את ה1 הזה, הוא משתייך לכמה קטגוריות ואני צריך תוצאה אחת שלו...
מקווה שהבנתם... תודה!

omercnet 15-11-08 13:54

אתה לא יכול לשלוף בבת אחת את זה,
תעשה לולאה שתעבור על הערכים

SDF 15-11-08 14:40

אולי משהו כזה:
קוד:

SELECT DISTINCT t1.DownloadID FROM `yourtable` as t1, `yourtable` as t2 WHERE t1.CategoryID != t2.CategoryID;

omercnet 15-11-08 15:22

ציטוט:

נכתב במקור על ידי SDF (פרסם 681933)
אולי משהו כזה:
קוד:

SELECT DISTINCT t1.DownloadID FROM `yourtable` as t1, `yourtable` as t2 WHERE t1.CategoryID != t2.CategoryID;

זה רק יחזיר לו את הDownloadID היחודיים, הוא רוצה לקבל גם את הקטגוריות שלהם (אם הבנתי נכון)

ואתה יכול להשיג את אותה המטרה עם GROUP BY במקרה הזה
קוד:

SELECT `DownloadID` FROM `table` GROUP BY `DownloadID`

SDF 15-11-08 16:02

הבנתי שהוא רוצה להחזיר downloadid שמופיע בכמה קטגוריות.
וזה מה שהצעתי.

SDF 15-11-08 16:47

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

SELECT DISTINCT t1.DownloadID
FROM `yourtable` as t1, `yourtable` as t2
WHERE t1.CategoryID != t2.CategoryID and t1.DownloadID = t2.DownloadID;


Shay-A 15-11-08 19:20

אני רוצה לקבל את הDownloadID מכמה ID של קטגוריות, עכשיו לא הבנתי ממש מה עשית בשאילתה... תודה!

Shay-A 15-11-08 21:40

אני לא יודע למה אני לא יכול לערוך, אבל אני רוצה נגיד לקבל את הID ששייך גם לקטגוריה מספר3 וקטגוריה מספר 4, ולא את הDownloadID ששיכים לכמה קטגוריות...
אני יכול להשתמש ב IN, נגיד:
WHERE CategoryID IN (3, 4)...
אבל זה ייתן לי תוצאות שהם או 3 או 4, אני צריך תוצאות שהם גם זה וגם זה...

SDF 17-11-08 21:33

אולי משהו כזה:
קוד:

SELECT *
FROM `sectionarticles` as t1, `sectionarticles` as t2
WHERE t2.ArticleID = t1.ArticleID AND
( t1.SectionID = 3 AND t2.SectionID = 4 ) OR
( t1.SectionID = 4 AND t2.SectionID = 3);


Shillo 18-11-08 10:28

אתה רוצה שהdownloadID ישתייך לכמה קטגוריות ושזה יציג רק פעם אחת כל קטגוריה?


כל הזמנים הם GMT +2. הזמן כעת הוא 11:11.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ