select join with group by

  • פותח הנושא q8z
  • פורסם בתאריך

q8z

New member
select join with group by

SELECT c2.id,count(*) number ,avg(c2.p3) speedLM,avg(c1.p3) speed FROM data c1 inner JOIN data c2 ON c1.id=c2.id where (c1.p3<>0 or c1.p4<>0 or c1.p5<>0) and 200610<>(SUBSTRING(c2.orderdate, 1, 6)) group by c1.id;​
מדוע התוצאות בשני העמודות זהות? בתודה
 

s h i m s h o n

New member
האם ID הוא מפתח הטבלה?

אם כן - זו התשובה. אתה שולף מאותה טבלה פעמיים (ב- FROM) וה-join הוא לפי אותו מפתח רשומה (ב- ON) => כלומר מכאן ואילך כל שורה תכיל פשוט פעמיים את אותה שורה מטבלת data ! למעשה, למשפט ה-WHERE כאן כבר אין כל השפעה על ההבדל שבין C1 ל-C2. כדי לשלוף באמת את מה שאתה רוצה, כדאי להביא איזו דוגמה קטנה, עם נתונים ופלט רצוי. בברכה, ש.
 

q8z

New member
תודה,הסתדרתי-הבדיקה צריכה להיות על קוד הסוכן

 
למעלה