Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!
SQL al-lekérdezéssel meg lehet oldani?
Baga Eri
kérdése
46
Sziasztok!
Van egy adatbázis egy iskola szakköreiről. A szakkörök munkaközösség szerint vannak csoportosítva.
Például: Matematika munkaközösséghez tartozik 5 szakkör (OKTV felkészítő, Versenyekre felkészítő, feladatmegoldó stb).
A Rajz munkaközösséghez tartozik 3-féle szakkör (...)
Szeretném kiíratni azt a szakkört, amelyikhez a legtöbb/legkevesebb szakkör tartozik.
A tábla felépítése:
id - azonosító
munkakoz - a munkaközösség neve
szakkornev - a szakkör neve
tanarnev - a szakkört tartó tanár neve
Így le tudom kérdezni:
SELECT szakkor.munkakoz, Count(szakkor.munkakoz)
FROM szakkor
GROUP BY szakkor.munkakoz
ORDER BY Count(szakkor.munkakoz)
LIMIT 1
De allekérdezéssel meg lehet oldani? Mert nekem nem sikerült :(
Köszönöm, ha segítesz megoldani.
Jelenleg 1 felhasználó nézi ezt a kérdést.
SQL, subselect
0
Középiskola / Informatika
Válaszok
4
VF{ Informatikus }
válasza
(Ez nem válasz, hanem hozzászólás a kérdéshez.)
Milyen SQL?
0
Baga Eri:
MYSQL (XAMPP)
1 hónapja0
Baga Eri
válasza
MYSQL (XAMPP)
0
VF:
Nem a legjobb ötlet külön válaszban válaszolni egy válaszra, mert arról a válasz író nem kap értesítést. Vagyis inkább hozzászólásban, mint fentebb tetted.
1 hónapja0
VF{ Informatikus }
megoldása
Na akkor első próba. (Merthogy nem teljesen világos a szándék. Illetve az ok sem…)
• Al-al-lekérdezés összeszámolja a darabszámokat
• Al-lekérdezés kiválasztja a maximális darabszámot
• Lekérdezés kiválaszt mindent aminek a darabszáma ugyanaz mint a maximális darabszám (ha több munkaközösségnek van maximális szakköre, mindegyiket listázza)
select
munkakoz
from szakkor
group by munkakoz
having count(*) = (
select
max(count)
from (
select
count(*) count
from szakkor
group by munkakoz
) foo
)
(Apró megjegyzés, hogy javasolt külön munkaközösség és tanár táblák használata, hogy a szakkör táblában csak hivatkozz rájuk, de az adataikat (például név) ne ott tárold.)
1
Még nem érkezett komment!
Baga Eri
válasza
A végén az a 'foo' mit akar jelenteni?
Egyébként nagyon jó lett.
És még ezt is légyszi magyarázd meg, kérlek:
count(*) count
Módosítva: 1 hónapja
0
VF:
Mindkettő alias, bármik lehetnek. Amikor egy al-lekérdezés egy másik lekérdezés from részében van, akkor kötelező megadni egy aliast. Általában az al-lekérdezés tartalmára utal. De ha úgysem lesz használva a továbbiakban, szoktunk ilyen dzsóker szavakat is használni. A másik alias opcionális, de max(`\``count(*)`\``) helyett praktikusabb egy egyszerű megnevezést adni a kifejezésnek.
1 hónapja1