Lekérdezés: Több-a-többhöz tábla, verzió kezeléssel
Sziasztok!
Segítségeteket szeretném kérni egy mySQL lekérdezésben. Mivel át kéne migráljak mySQL adatokat MSSQL-be, viszont enélkül nem fog menni. Van egy táblám ami híreket különböző kategóriákba sorol, de verzió követéssel! S az a lényeg, hogy mindegyik hírből csak az utolsó verziót kéne migrálni.
Hogy jobban szemléltessem:
http://kepfeltoltes.hu/view/090409/sql_problem_www.kepfeltoltes.hu_.jpg
Id1 = hír id
Id2 = kategória id
Nagyon szépen le lehetne kérdezni ki hova tartozik, ha nem lenne verzió!
Pl. lekérdezem a 81-es hírt.
http://www.kepfeltoltes.hu/view/090409/sql_problem2_www.kepfeltoltes.hu_.jpg
Oké, ez az 1-es és 4-es kategóriába tartozik. S itt látszik a probléma. Két kategóriában van benne, viszont több verzióval ellátva.
Ha lenne egy ideális lekérdezésem, ilyen eredményt kéne adjon:
Id1 : 81 , Version: 12, Id2: 1
Id1: 81, Version: 12, Id2: 4
Kicsit furán írtam, de ez visszaadná tehát a 81es cikk legutolsó verzióját, és hogy ez melyik két kategóriában van.
Na de akkor távolodjunk kiljebb a példától, a komplex probléma az hogy: Az egész táblát (nem csak egy hírt) úgy kéne leszűrni, hogy az összes hírből a legutolsó verzió legyen benne. Viszont ez nem fix érték, mert van hír ami aminél a 8. verzió az utolsó, van aminél a 22.
Szerintetek, mi lehet a megoldás?
■ Segítségeteket szeretném kérni egy mySQL lekérdezésben. Mivel át kéne migráljak mySQL adatokat MSSQL-be, viszont enélkül nem fog menni. Van egy táblám ami híreket különböző kategóriákba sorol, de verzió követéssel! S az a lényeg, hogy mindegyik hírből csak az utolsó verziót kéne migrálni.
Hogy jobban szemléltessem:
http://kepfeltoltes.hu/view/090409/sql_problem_www.kepfeltoltes.hu_.jpg
Id1 = hír id
Id2 = kategória id
Nagyon szépen le lehetne kérdezni ki hova tartozik, ha nem lenne verzió!
Pl. lekérdezem a 81-es hírt.
http://www.kepfeltoltes.hu/view/090409/sql_problem2_www.kepfeltoltes.hu_.jpg
Oké, ez az 1-es és 4-es kategóriába tartozik. S itt látszik a probléma. Két kategóriában van benne, viszont több verzióval ellátva.
Ha lenne egy ideális lekérdezésem, ilyen eredményt kéne adjon:
Id1 : 81 , Version: 12, Id2: 1
Id1: 81, Version: 12, Id2: 4
Kicsit furán írtam, de ez visszaadná tehát a 81es cikk legutolsó verzióját, és hogy ez melyik két kategóriában van.
Na de akkor távolodjunk kiljebb a példától, a komplex probléma az hogy: Az egész táblát (nem csak egy hírt) úgy kéne leszűrni, hogy az összes hírből a legutolsó verzió legyen benne. Viszont ez nem fix érték, mert van hír ami aminél a 8. verzió az utolsó, van aminél a 22.
Szerintetek, mi lehet a megoldás?
Verzió
Na igen...
Szóval ezért most intenzíven nézegethetem a táblákat. De lehet hogy rossz oldalról közelítem a problémát. Mert most nézegetem a híreknek a tábláját (amiben benne van minden részletes adat)
Van egy LastVersion oszlopa ami bool. És ha úgy szűröm a táblát hogy LastVersion = 1, akkor az összes utolsó verziós hírt megkapom. Ráadásul a mellette lévő columnban kiírja hogy mi az utolsó verzió (8 vagy 20 vagy 35).
Most már csak egy olyan join kéne hogy húzza be a relációs táblába (Id1,Version1,Id2 columnok) a megegyező Version-t és Id-t (az előbbi szűrt táblából) és akkor meglenne a szekció sorszáma. Viszont a többi verziót meg ne jelezze ki. (amit nyílván nem tud behúzni mivel az előbb említett szűrt táblában nincs benne)
hmhm...
Megoldva...