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

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

pcnet 26-05-15 12:15

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

Packages: ID - Name - Section

http://srv1.jpg.co.il/7/5553c55f05740.png

-------

Sections: ID - Name

http://srv1.jpg.co.il/6/5553c589e2dbe.png

אני מנה בדרך הבאה אבל זה לא מציג לי כמה חבילות קיימות בכל קטגורייה.

PHP קוד:

  $sec="SELECT Sections.ID, Sections.Name, Sections.TimeStamp, count(Packages.Section)
  FROM Sections
  left join Packages on Packages.Section = Sections.ID
group by Sections.ID, Sections.Name
order by count(Packages.Section) desc
  "


תודה רבה לעוזרים

while1 26-05-15 16:47

בתור התחלה תשנה את המידע בpackages שיכיל את האידי של הsection ולא את השם שלו.
אתה יוצר יתירות (מידע שמופיע כפול במסד),
ובעיקר, זה לא הגיוני שבשאילתה אתה משווה אידי לשם
קוד:

Packages.Section = Sections.ID

pcnet 26-05-15 20:05

ציטוט:

נכתב במקור על ידי while1 (פרסם 895821)
בתור התחלה תשנה את המידע בpackages שיכיל את האידי של הsection ולא את השם שלו.
אתה יוצר יתירות (מידע שמופיע כפול במסד),
ובעיקר, זה לא הגיוני שבשאילתה אתה משווה אידי לשם
קוד:

Packages.Section = Sections.ID

יש לי בעיה אם אני ישנה את זה לאידי של ה- section כי יש לי כמה פונקציות שפועלות על השם של ה- section ולא על המספר של section.

while1 27-05-15 11:10

אז דבר ראשון זה תכנון לקוי מראש.
יש לך כמה אפשרויות:
- לשנות את הפונקציות כמו שהן פועלות עכשיו (מומלץ!).
- להוסיף שדה אידי ולהתחיל לעבוד איתו מעכשיו והלאה.
- בשאילתה שאתה משתמש, לפחות תשתמש נכון ותשווה "שם לשם" ולא "שם לאידי".

שאילתה מעודכנת:
קוד:

SELECT `Section`.* , `c`.`total_packs` FROM `Sections`
LEFT JOIN (
    SELECT `Section` , count(`ID`) as `total_packs` FROM `Packages`
    GROUP BY `Section`
) as `c` ON `Section`.`Name` = `c`.`Section`
ORDER BY `c`.`total_packs` DESC

לא הרצתי, אני מקווה שאין לי טעות

**אפילו אני התבלבלתי עכשיו והשוויתי בין 2 האידים בטעות, מתוך הרגל. תיקנתי את השאילתה שתשווה בין 2 שמות**

pcnet 27-05-15 23:57

עדיין לא הסתדר לי.

while1 28-05-15 00:20

ציטוט:

נכתב במקור על ידי pcnet (פרסם 895842)
עדיין לא הסתדר לי.

תפרט בדיוק מה השגיאה/התוצאה שאתה מקבל..

pcnet 28-05-15 11:13

זה פשוט לא מציג כלום
 
השאילה אם זה Section או Sections

ציטוט:

נכתב במקור על ידי while1 (פרסם 895828)
אז דבר ראשון זה תכנון לקוי מראש.
יש לך כמה אפשרויות:
- לשנות את הפונקציות כמו שהן פועלות עכשיו (מומלץ!).
- להוסיף שדה אידי ולהתחיל לעבוד איתו מעכשיו והלאה.
- בשאילתה שאתה משתמש, לפחות תשתמש נכון ותשווה "שם לשם" ולא "שם לאידי".

שאילתה מעודכנת:
קוד:

SELECT `Section`.* , `c`.`total_packs` FROM `Sections`
LEFT JOIN (
    SELECT `Section` , count(`ID`) as `total_packs` FROM `Packages`
    GROUP BY `Section`
) as `c` ON `Section`.`Name` = `c`.`Section`
ORDER BY `c`.`total_packs` DESC

לא הרצתי, אני מקווה שאין לי טעות

**אפילו אני התבלבלתי עכשיו והשוויתי בין 2 האידים בטעות, מתוך הרגל. תיקנתי את השאילתה שתשווה בין 2 שמות**


while1 28-05-15 13:13

אתה צודק, שם הטבלה היא Sections,
ושם העמודה בטבלה של החבילות היא Section.
צריך לשים לב לזה, תיקנתי את השאילתה.

אם מוחזרת שגיאה מהשאילתה, תעתיק אותה לכאן.


קוד:

SELECT `Sections`.* , `c`.`total_packs` FROM `Sections`
LEFT JOIN (
    SELECT `Section` , count(`ID`) as `total_packs` FROM `Packages`
    GROUP BY `Section`
) as `c` ON `Sections`.`Name` = `c`.`Section`
ORDER BY `c`.`total_packs` DESC


pcnet 31-05-15 14:24

תודה, עובד כמו שצריך

pcnet 31-05-15 16:22

כרגע אני מציג פרטים על ID מטבלת Packages.
ואני גם מציג את Section של ה- ID לדוגמא: Tweaks.

אני רוצה כעת שניתן יהיה ליצור קישור של ה- Tweaks ל- ID בטבלת Sections ?


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

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