Těžký select – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Těžký select – MySQL – Fórum – Programujte.comTěžký select – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Luk
~ Anonymní uživatel
45 příspěvků
2. 7. 2015   #1
-
0
-

Dobrý den,

chtěl bych vás poprosit o pomoc s jedním dotazem. Už jsem se do toho zamotal.

Tabulka: HRAC                                  Tabulka: HRACSKE_BODY

ID    PREZDIVKA    TRIDA                  HRAC_ID    BODY

1    hrac1             trida1                      1                 25

2    hrac2             trida1                      1                 25

3    hrac3             trida2                      3                 25

Takto nějak by mohli vypydat data v tabulkach. HRAC_ID je cizí klíč do tab. HRAC na sloupec ID. 
Potřeboval bych dotaz, který vypočítá a vypíše průměrný počet bodů na jednoho hráče pro každou třídu.

Tedy výstup: třída1 -  průměrný počet bodů
                     třída2 - průměrný počet bodů.

Dostal jsem se k tomuto: 

SELECT S.id, S.first_name, S.last_name, AVG(M.points) from student S, points_math M WHERE s.id = M.student_ID GROUP by S.class

Ale nevypisuje to správné hodnoty.

Díky moc.

Nahlásit jako SPAM
IP: 89.190.62.–
Reklama
Reklama
Luk
~ Anonymní uživatel
45 příspěvků
2. 7. 2015   #2
-
0
-

Trochu mi tam blblo formátování textu. Název tabulky HRACSKE_BODY patří k té druhé tabulce vpravo.

Nahlásit jako SPAM
IP: 89.190.62.–
peter
~ Anonymní uživatel
2528 příspěvků
3. 7. 2015   #3
-
0
-

Na tohle si netroufam. Ale treba ti tohle pomuze.

SELECT S.id,
       S.first_name,
       S.last_name,
       Avg(M.points) AS body,
       sum(M.points) AS body_sumFROM   points_math M
       LEFT JOIN student S ON S.id = M.student_id
GROUP  BY S.class, M.student_id

UNION

SELECT S.id,
       S.first_name,
       S.last_name,
       0 AS body,
       0 AS body_sumFROM   student S
       LEFT JOIN points_math M ON M.student_id=S.id
WHERE M.points=NULL

Principialne by to melo delat toto
- druhej dotaz vytahne vsechny, kteri nemaji zadne body
- prvni dotaz vytahne vsechny s bodama, zgrupuje podle class a jeste podle id hrace (ale protoze v tabulce body nemas hrace s nulou, tak je musis nejak prilepit z jine tabulky)
Mozna, ze ten join, jak to mas ty, to udela vsechno dohromady a jen mas spatne to grupovani.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:5c37:6d...–
P
~ Anonymní uživatel
193 příspěvků
3. 7. 2015   #4
-
0
-

Jak to muze vypisovat spravne hodnoty, kdyz v zadani mas tabulky s hraci a v selectu tabulky se studenty? Kdyz v tom mas takovy bordel, tak je opravdu kazdy select tezky.

Dale kdyz chces prumerny pocet bodu za tridu, tak v dotazu nemaji co delat udaje o hraci. Takze:

SELECT
	h.TRIDA, AVG(b.BODY) AS PRUMER
FROM
	HRACSKE_BODY b
	INNER JOIN HRAC h ON h.ID = b.HRAC_ID
GROUP BY
	h.TRIDA
Nahlásit jako SPAM
IP: 85.93.116.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

<select> — založil lolik

Select — založil Zuben

SELECT — založil Row

Select*from — založil Salieri

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý