Ik zit al een dag met een hele irritante query , het zou ideaal zijn als deze goed zou werken.
Ten eerste De tabellen.
Tabel : tvseeker > Deze tabel slaat tv series gegevens op
Tabel : tv_infoseeker -> Deze tabel slaat info over de serie op mits deze aanwezig is.
TABEL TVSEEKER :
id int(255)
n Naam
epi Episode (int)
season Season (int)
a Unix time
f Formaat > 1=xvid ,2=dvdrip,3=HD,4=DVD
cat Categorie -> 1= eerste keer gepost 2=repost
TABEL tv_infoseeker
Tekst
genres
IMages
Ok mijn probleem :
Er komen elk uur tig nieuwe serie releases in de tabel.
Voorbeeld :
Heroes seizoen 3 episode 4 , HD , 3 uur geleden
Maar kan ook deze zijn
Heroes seizoen 3 episode 1,XVID, 1 uur geleden.
Ik wil op een pagina het volgende :
Een lijst met :
- Unieke serie namen ( group by N).
- Alleen het nieuwe seizoen en de laatste(hoogste) episode.
- Gesorteed op laatst toegevoegd.
Ik heb een querie die werkt d.m.v. subqueries , maar die is veeels te sloom. ( 3,8 sec).
rel=tvseeker
info=tvseeker_info
SELECT rel.n , rel.a , rel.season , rel.f ,rel.epi ,info.n, info.genres , info.tekst,info.image
FROM tvseeker as rel, tvseeker_info as info
WHERE rel.n=info.n
AND rel.a=(SELECT max(a) FROM tvseeker WHERE n=rel.n )
AND rel.season=(SELECT max(season) FROM tvseeker WHERE n=rel.n )
AND b.epi=(SELECT max(epi) FROM tvseeker WHERE n=rel.n AND season=rel.season )
AND b.cat='1' AND (b.f='1' OR b.f='3')
GROUP BY rel.n ORDER BY rel.a DESC
SELECT rel.n, rel.a, rel.season, rel.f, rel.v, rel.epi, info.genres, info.tekst, info.image
FROM tvseeker rel INNER JOIN (
SELECT rel_extra.n, max( rel_extra.a ) AS a, MAX( rel_extra.season ) AS season, info_extra.genres, info_extra.tekst, info_extra.image
FROM tvseeker AS rel_extra
INNER JOIN (
SELECT genres, n, tekst, image
FROM tvseeker_info)
AS info_extra ON rel_extra.n = info_extra.n
GROUP BY info_extra.n
)
AS info ON rel.n = info.n AND rel.a = info.a
AND rel.season =info.season
AND (rel.f = '1' OR rel.f = '3')
GROUP BY rel.n
ORDER BY rel.a DESC
SELECT tabel1.kolom1, tabel1.kolom2, tabel2.kolom1,tabel3.kolom5
FROM tabel1
INNER JOIN tabel2 (tabel1.id=tabel2.id)
INNER JOIN tabel2 (tabel1.id=table3.id)
GROUP BY tabel2.kolom1,tabel5.kolom5
ORDER BY tabel1.kolom1
LIMIT 30
Wat een heerlijk niets zeggend database ontwerp hanteer jij zeg
Op de volgende 2 tabellen heb ik een query gebouwd die zou moeten doen wat jij wilt:
Episodes: naam, episode, season, time, formaat, categorie
Series: naam, genres, images, text
SELECT DISTINCT e1.naam,
MAX(e1.season)over(partition by e1.naam),
(SELECT MAX(e2.episode) FROM episodes e2 WHERE e2.naam = e1.naam GROUP BY e2.naam), s.text, s.genre
FROM episodes e1
LEFT JOIN Series s ON (s.naam = e1.naam);
Wat een heerlijk niets zeggend database ontwerp hanteer jij zegÂ
Op de volgende 2 tabellen heb ik een query gebouwd die zou moeten doen wat jij wilt:
Episodes: naam, episode, season, time, formaat, categorie
Series: naam, genres, images, text
Super man ! , alleen moet ik de query nu omzetten in mysql standaard. Heb al een hoop geprobeerd ,maar ik denk dat mijn kennis niet toereikend genoeg is.
Iemand enig idee hoe je de query hierboven om kan zetten in mysql ?