ugrás a tartalomhoz

Lekérdezés: Több-a-többhöz tábla, verzió kezeléssel

gjozsi · 2009. Ápr. 9. (Cs), 16.00
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?
 
1

Verzió

Poetro · 2009. Ápr. 9. (Cs), 17.26
És honnan derül ki, hogy mi az aktuális verzió, amire szükség van? Eddig ez hogyan volt megoldva?
2

Na igen...

gjozsi · 2009. Ápr. 9. (Cs), 19.17
Eddig nem tudom hogyan volt megoldva, mivel az oldalmotort nem én írtam, az php-ban van. S most térünk át ASP.NET-re, én ahhoz (C#) értek, és a php-ból nem túl sokat veszek le.

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...
3

Megoldva...

gjozsi · 2009. Ápr. 9. (Cs), 19.59
Hm, azthiszem megoldottam. Igaz kellett közben két CREATE TABLE az állapotok megtartásához és az SQL rövidségéhez, de kész! Azért köszönöm h más irányba próbáltál vezérelni. Bejött!