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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=87307)

liorclub 07-01-11 18:49

SQL האם השאילתא חוקית
 
זה המאגר שלי
BOOKS (serial-no,title,ISBN)
AUTHOR (name,ISBN)

אני מנסה לקבל את כל הכותרות, ISBN, והשם של המחבר שיש במאגר 'ספרים' רק העתק אחד

SELECT title,AUTHOR.ISBN,name
FROM books,authors
WHERE books.isbn = author.isbn
AND IN
(
SELECT isbn FROM books GROUP BY isbn HAVING count(*) = 1
(

תודה מראש,

Shay Ben Moshe 07-01-11 20:13

ליאור לא כל כך הבנתי מה אתה מנסה לעשות.
יכול להיות שמה שאתה מחפש זה distinct.
בכל אופן, תעשה join ולא from שתי טבלאות, הרבה יותר קריא והoptimizer של mysql עובד יותר טוב ככה.

liorclub 07-01-11 22:33

שי, זה ב SQL כללי, ולא מדובר עדיין ב MySql ולכן אני משתמש עם from
לגבי ה distinct זה מספק פשוט שהשורות לא יחזרו על עצמן אבל זה לא בדיוק מה שאני צריך

אני שואל מבחינת חוקיות אם השאילתא חוקית

מה שמטריד אותי ואני לא בטוח לגבי זה הנושא של
where column = column AND IN ...

החלק הזה חוקי ?

dumper 07-01-11 23:14

לא
צריך לתת לו איזשהוא שם של טור לפני הIN
אם אתה רוצה לבדוק רק אם קיים צריך להשתמש בEXSISTS

ורק טיפ בכללי תמיד תשתמש בQUALIFIERS בJOIN זה יוצר איזשהוא סדר בראש


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

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