Új hozzászólás Aktív témák
-
Ispy
nagyúr
válasz
Fundiego
#5647
üzenetére
Akkor a két select egy-egy subquery, amiket joinnal kell összekötni. De ebből 3 kell:
- lekérdezés 1 inner join lekérdezés 2, mindent visszaad, ami mindkét lekérdezésben benne van
- lekérdezés 1 left join lekérdezés 2, ahol lekérdezés 2 aznosítója null, minden, ami csak lekérdezés 1-ben szerepel
- lekérdezés 2 left join lekérdezés 1, ahol lekérdezés 1 azonosítója null, minden, ami csak lekérdezés 2-ben szerepelEzt a 3 lekérdezést kell union allal összerakni egy selectben, de csak akkor lesz jó, ha van minden sornak egyedi azonosítója, pl. a név mező, ha az garantáltan egyedi, vagy egy egyedi id a névhez.
-
DS39
nagyúr
válasz
Fundiego
#3782
üzenetére
szerintem így:
$sql = "
SET @rank=0;
select @rank:=@rank+1 AS rank, s.* FROM
(
SELECT gyumolcs, sum(mennyiseg)
FROM gyumolcs Where ev='2016'
group by gyumolcs
ORDER BY sum(mennyiseg) DESC
) s";
$result = mysqli_query($conn, $sql) or die("Bad Query: $sql");
tehát egy változóba mehet az egész.
+ gyors keresés alapján a második paraméter lehet csak az sql, a harmadik opcionális és nem az.
mysqli_query(connection,query,resultmode);
-
DS39
nagyúr
válasz
Fundiego
#3761
üzenetére
Így meg lehetne oldani:
SELECT
ev,
COUNT(CASE WHEN vegeredmeny='1' AND Karosszeria='Ferrari' then datum ELSE NULL END) első,
COUNT(CASE WHEN vegeredmeny='2' AND Karosszeria='Ferrari' then datum ELSE NULL END) második
FROM futam
GROUP BY eva distinct-et a case elé lehetne írni, de nem tudom most kipróbálni, hogy helyes a szintaktika.
-
nyunyu
félisten
válasz
Fundiego
#3600
üzenetére
Ablakozó függvénnyel beszámozod a pilótánkénti helyezéseket, majd leválogatod, melyik lett az első, második, harmadik?
Oracle alatt valami ilyesmi lenne:
with eredmeny
as (select id,
ev,
vegeredmeny,
pilota,
pont,
row_number() over (partition by ev, pilota order by vegeredmeny, id) eredmeny
from futam)
SELECT e.pilota,
SUM( e.pont ),
e1.vegeredmeny er1,
e2.vegeredmeny er2,
e3.vegeredmeny er3,
e3.vegeredmeny er4
FROM eredmeny e
join eredmeny e1
on e1.ev=e.ev
and e1.pilota=e.pilota
and e1.eredmeny=1
join eredmeny e2
on e2.ev=e.ev
and e2.pilota=e.pilota
and e2.eredmeny=2
join eredmeny e3
on e3.ev=e.ev
and e3.pilota=e.pilota
and e3.eredmeny=3
join eredmeny e4
on e4.ev=e.ev
and e4.pilota=e.pilota
and e4.eredmeny=4
WHERE e.ev = 2017
GROUP BY e.pilota,
e1.vegeredmeny,
e2.vegeredmeny,
e3.vegeredmeny,
e4.vegeredmeny
ORDER BY SUM( e.pont ) DESC; -
Apollo17hu
őstag
válasz
Fundiego
#3567
üzenetére
Szélsőséges esetben előfordulhat olyan holtverseny is, ahol két versenyző az összes sportágat tekintve azonos helyezésekkel rendelkezik. Ekkor csak pénzfeldobás (--> random szám generálás) dönthet. Vagy létrehozol egy külön táblát, amiben a fair-play értékeket vezeted.

Visszatérve a problémádhoz talán megoldás lehetne, ha játékosonként a játékosok helyezéseit sorbarendezve, összefűzve letárolnád, és ennek a minimumát vennéd a helyezések minimuma helyett. Pl.:
egyik játékos helyezései:
1, 2, 2, 4, 5, 5, 5-->1224555másik játékos helyezései:
1, 2, 3, 3, 3, 3, 3-->1233333Oracle-ben ehhez a listagg() függvényt tudod használni. Valahogy így:
listagg(helyezes) WITHIN GROUP (ORDER BY helyezes) OVER (PARTITION BY jatekos) -
nyunyu
félisten
Új hozzászólás Aktív témák
- HIBÁTLAN iPhone 12 64GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS4655
- ÚJ Asus TUF F16 FX607 - 16" WUXGA 144Hz - Intel i5 210H - 16GB - 1TB - Win11 - RTX 4050 - 3 év gari
- DDR5 8/ 16/ 32GB 4800-5600MHz UDIMM PC RAM, több db- számla, garancia
- Alkalmi vétel!Csere-Beszámítás! Csak tesztelt HP Omen 16! R9 8940HX / 32GB DDR5 / RTX 5060 / 1TB SSD
- iKing.hu Apple iPhone 14 Pro Silver 128GB használt szép állapot 95% akku 6 hónap garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


