לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 05-03-2008, 17:49
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
זה לא מסובך
בתגובה להודעה מספר 1 שנכתבה על ידי DCD שמתחילה ב "לקיחת מידע מ-2 טבלאות שונות ללא תלות אחת בשניה"

אבל תקבל הרבה מידע.

השאלה הראשונה היא איך אתה מעוניין לחבר את המידע בין הטבלאות?

אם אתה מעוניין למשל בכל הרשומות מטבלה אחת ובכל הרשומות מהטבלה השניה שורה אחרי שורה, אתה יכול להתשמש בUNION
קוד PHP:
 SELECT tab1.a,tab1.b
FROM tab1
UNION 
SELECT tab2
.a,tab2.b
FROM tab2 


אם אתה מעונין במכפלה של כל הרשומות מטבלה אחת עם כל הרשומות בטבלה השניה, אתה יכול לבצע JOIN (ואפילו לא צריך לכתוב אותו במפורש)
קוד PHP:
 SELECT tab1.a,tab1.b,tab2.a,tab2.b
FROM tab1
,tab2 

שים לב שהאפשרות השניה תחזיר לך הרבה נתונים (מכפלה קרטזית של שתי הטבלאות)

שים לב גם שהאפשרות הראשונה חוקית רק אם השדות הנבחרים בשתי הטבלאות הם מאותו טיפוס
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 05-03-2008, 19:02
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
תודה :)
בתגובה להודעה מספר 2 שנכתבה על ידי המממ שמתחילה ב "זה לא מסובך"

קודם שמתי לב ששכחתי לפרט שמסד הנתונים הוא MySQL.

דבר נוסף, ניסיתי מה שכתבת, אבל זה בעייתי כי ב-2 הטבלאות יש טורים בעלי שמות שונים לגמרי ואין כל קשר בין 2 הטבלאות.

גם בשאילתא עצמה אני רוצה לקבל מידע מ-2 הטבלאות, בלי שתהיה תלות ביניהן (בלי שערך של שדה אחד בטבלה יהיה חייב להיות שווה לערך של שדה בטבלה השניה)

העניין עם המכפלה הקרטזית מובן לי במעורפל...
וניסיתי לשחק איתו עם פיסקת WHERE, אך אני לא מבין את החוקיות במצב הזה כאשר יש לי 2 תנאים כאלה לדוגמא:
מצב 1:
קוד:
SELECT tab1.a,tab1.b,tab2.a,tab2.b FROM tab1,tab2 WHERE tab1.column1='foo' AND tab2.column2='bar'


מצב 2:
קוד:
SELECT tab1.a,tab1.b,tab2.a,tab2.b FROM tab1,tab2 WHERE tab1.column1='foo' OR tab2.column2='bar'


(שים לב שהשאילתות דומות לגמרי, מלבד בפיסקת ה-WHERE שבה יש לי בשאילתא העליונה תנאי של AND ובשאילתא התחתונה תנאי של OR. מה החוקיות פה? קשה לי להבין את המכפלה הקרטזית הזאת... )

עוד דבר הוא שאני בוחר מידע מכל טבלה עפ"י מידע חיצוני, לדוגמא:
קוד:
tbl1.column='foo'


[ אך שוב, אין קשר בין הטבלאות, לדוגמא לא יהיה לי מצב כזה:
קוד:
tbl1.column=tbl2.column2

]

ודבר אחרון הוא שבסופו של דבר יוצא שמכל טבלה אני בוחר רשומה אחת בלבד - סה"כ 2 רשומות שאני רוצה לחברן ביחד לרשומה אחת. LEFT JOIN לדוגמא עושה את העבודה הזו, אבל הוא גורם לטבלה להיות תלותית בטבלה המקורית שנמצאת בפיסקת ה- FROM.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 05-03-2008, 19:20
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
הבנתי
בתגובה להודעה מספר 3 שנכתבה על ידי DCD שמתחילה ב "תודה :)"

אתה מעוניין בערך אחד מטבלה1 ובערך אחד מטבלה2 מסודרים זה לצד זה

בהנחה שסעיף ה WHERE שלך מאפשר לך להגיע לערך היחיד בכל טבלה אם אתה מבצע את השאילתא בנפרד אז גם המכפלה של הערכים תשאר 1
(המתמטיקה עדיין עובדת, גם במסדי נתונים )

לגבי AND ו OR החוקיות היא פשוטה, אם תבקש את הערכים המתאימים מטבלה1 או את הערכים המתאימים מטבלה2 תקבל מכפלה של הערך המתאים בטבלה1 עם כל הערכים בטבלה2 ולהיפך.

לעומת זאת אם תבקש את המקרה שבו התנאי הראשון מתקיים וגם התנאי השני מתקיים (בהנחה ששני התנאים מחזירים ערך יחיד) אזי תקבל מכפלה של הערך הראשון עם הערך השני

דוגמא מאחת מטבלאות ההדגמה של אורקל:
(שים לב שהשתמשתי באותה טבלה פעמיים אבל לא קישרתי בין שתי הטבלאות)

קוד PHP:
 select from dept;

    
DEPTNO DNAME          LOC
---------- -------------- -------------
        
10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON 

קוד PHP:
 SELECT d1.dname d2.dname
FROM dept d1
dept d2
WHERE d1
.deptno=10
AND
d2.deptno=20;

DNAME          DNAME
-------------- --------------
ACCOUNTING     RESEARCH 


קוד PHP:
 SELECT d1.dname d2.dname
FROM dept d1
dept d2
WHERE d1
.deptno=10
OR
d2.deptno=20

DNAME          DNAME
-------------- --------------
ACCOUNTING     ACCOUNTING
ACCOUNTING     RESEARCH
ACCOUNTING     SALES
ACCOUNTING     OPERATIONS
RESEARCH       RESEARCH
SALES          RESEARCH
OPERATIONS     RESEARCH 
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 01:54

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר