Egy SQL adatbázisban hogyan lehet megállapítani, hogy mely tábla, mely oszlopa tartalmazza az adott adatot?
Adott egy SQL adatbázis. Egy adott cikkszámhoz sok megnevezés tartozik.
Van egy táblázatom: Ár, Megnevezés
Ehhez kéne cikkszámot találnom, de nem világos, hogy a 30-40 megnevezés oszlopból melyikben van a táblázat szerinti megnevezés (egy oszlopból veszi, de az a kérdés, hogy melyikből),
What?
Ki tervez ilyen adatbázist?
Hát ez tényleg elég béna adatbázis. ':D szerintem sokkal gyorsabb és hosszú távon könnyebben fenntartható lenne átalakítani az adatbázist. Szerintem egy query-vel nem is oldható meg. Max ha az information schema alapján végigiterápsz az oszlopokon és megnézed egyesével, hogy az adott oszlop tartalmazza e az értéket.
De mint mondtam ez nagyon rossz így. Inkább alakítsd át az adatbázist, hogy az egyik táblában legyenek az item adatai megnevezés nélkül és egy másik táblában csak a megnevezések úgy, hogy foreign key-jel referálnak az item táblázat id-jeire. Hosszú távon és több adattal meg fogja hálálni a rendszer azt a fél óra-óra befeketett munkát amég átköltözteted.
Ez egy ügyviteli rendszer adatbázisa rengeteg "az idők folyamán kialakult" megoldással. Csak olvasási jogom van rá.
A sok név sajnos indokolt. A "fapados" elképzelésem valami ilyen:
select cikkszam from tab1 where nev1='nev' or nev2='nev'....
Ha nincs jobb ez marad
Hát részvétem, hogy ilyennel kell dolgozz. :D
A where nev1='asd' or ... megoldás megteszi, ha nem kell a runtime alatt tudnod, hogy pontosan melyik oszlopból van. Sok sikert!
Ha csak egy kicsit is tisztességesen volt tervezve, akkor maguknak az oszlopoknak vannak kommentjeik, hogy mire valók.
A tervezőnek három eszköze van, hogy tudassa veled, mi mire jó:
- tisztességes oszlopnevek
- oszlopokhoz és táblákhoz fűződő kommentek, amelyek az adatbázis szerkezetében tárolódnak
- dokumentáció
- személyes közlés (ez azért három, mert a negyedik már nem a normális eszközök közé tartozik, de ki lehet próbálni, ha minden kötél szakad)
Ha egyik sem áll rendelkezésedre, akkor marad a nyomozás. Elkezded összehasonlítani a táblázattal, belenézel a kezelőprogram forrásába stb. Konkrétabb ötleteket konkrétabb tények alapján lehetne mondani. Ha van mondjuk egy Excel-táblázatod a megnevezésekkel, akkor csinálsz a tábládból egy exportot (select * from tábl limit 1000), és Excelben nekilátsz összehasonlítani.
Köszönöm a válaszokat. Végül egy egész más megoldás született. A progiból ki lehet exportálni az adatokat, amivel tudok dolgozni.
Alapvetően nem rossz az adatbázis, de mindig van olyan 10001. adat, aminek a megtalálása kihívás. A gyártó az adatok kiadásában nem érdekelt, mert a kimutatásokat kicsit más áron csinálja, még úgy is, hogy nekem sokat kell nyomoznom...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!