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

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

while1 31-05-15 17:21

לא הבנתי את השאלה

pcnet 31-05-15 17:36

ציטוט:

נכתב במקור על ידי while1 (פרסם 895905)
לא הבנתי את השאלה

לדוגמא: אם אני מציג את הפרטים מה- ID מטבלת Packages אז זה יציג לי את הפרטים הבאים

http://srv1.jpg.co.il/3/556b29c705263.png

עכשיו מטבלת ה- Packages אני מוציא את שם Sections.

אני פשוט רוצה להציג את מספר ה- ID שבטבלת ה- Sections ולא את שם ה Section.

while1 31-05-15 18:06

אני מקווה שהבנתי את הכוונה שלך.

יעזור אם תביא את השאילתה ששולפת את המידע הנוכחי כדי שיהיה אפשר להלביש עליה את מה שאתה מבקש.

בגדול זה בסך הכל לעשות שוב

קוד:

LEFT JOIN `Sections` ON `Packages`.`Section` = `Sections`.`Name`
ואז להוסיף לעמודות ששולפים בSELECT

קוד:

`Sections`.`ID`


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

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