Forum » Programiranje » Težava pri SQL stavku z neznanim stolpcem
Težava pri SQL stavku z neznanim stolpcem
Matej_ ::
Torej, problem je sledeči:
Iz dveh tabel moram preko "select ... join ..." prebrati 6 stolpcev, težava pa je v tem da za dva stolpca v teh dveh tabelah ne vem imen (je drugačno ko dobim novo različico baze in na to nimam vpliva).
Ali je možno "join" napraviti tudi če veš samo pozicijo stolpca in ne imena (recimo je 3 po vrsti)?
Če je to mogoče bi mi prihranilo precej časa, ker moram sicer vskič odpreti bazo, preveriti imena in popraviti razlike.
Že vnaprej hvala za pomoč
Iz dveh tabel moram preko "select ... join ..." prebrati 6 stolpcev, težava pa je v tem da za dva stolpca v teh dveh tabelah ne vem imen (je drugačno ko dobim novo različico baze in na to nimam vpliva).
Ali je možno "join" napraviti tudi če veš samo pozicijo stolpca in ne imena (recimo je 3 po vrsti)?
Če je to mogoče bi mi prihranilo precej časa, ker moram sicer vskič odpreti bazo, preveriti imena in popraviti razlike.
Že vnaprej hvala za pomoč
ADF ::
Z enim select stavkom bo bolj težko. Po mojem bi moral proceduro napisat (ali neko skripto), ki ti iz podatkovnega slovarja oz. kataloga objektov v bazi vrne ime stolpca na določeni poziciji. Odvisno od tega katero bazo uporabljaš.
V Oraclu. DB2 ali Postgresu to nebi smel bit problem.
V Oraclu. DB2 ali Postgresu to nebi smel bit problem.
Ziga Dolhar ::
Če ne gre za stolpca, po katerih določiš relacijo za kombiniranje tabel, bi morda lahko namesto eksplicitnega navajanja stolpcev uporabil SELECT * ... grdo in potencialno bloat, a vseeno :).
https://dolhar.si/
Matej_ ::
"select * ..." žal sploh ne pride v poštev, baza ima vsaj kakih 60 stolpcev na tabelo, tako da bi potrata bila prevelika, obenem pa gre še za stolpca ki določata relacijo...
Google mi žal ni uspel dati kakih konkretnih odgovorov. Za povrh pa sem na tamle izgubil že 10x več čas kot bi ga prihranil s to rešitvijo :(... ki pa je še vedno nimam :). In ker odprtih vprašanj take narave sploh ne maram se bom verjetno s temle trudil do onemoglosti.
Mimogrede, uporabljam pa MS SQL server, če se bo še komu utrnila kaka misel ki mi bi utegnila biti v pomoč.
Google mi žal ni uspel dati kakih konkretnih odgovorov. Za povrh pa sem na tamle izgubil že 10x več čas kot bi ga prihranil s to rešitvijo :(... ki pa je še vedno nimam :). In ker odprtih vprašanj take narave sploh ne maram se bom verjetno s temle trudil do onemoglosti.
Mimogrede, uporabljam pa MS SQL server, če se bo še komu utrnila kaka misel ki mi bi utegnila biti v pomoč.
dmok ::
Ne vem sicer kaj si hotel povedati s tem, da moraš vsakič odpreti bazo, preveriti imena in popraviti razlike, menda ne popravljaš vsakič poizvedbe ? Kakorkoli že, z eno samo poizvedbo se bojim da ne bo šlo, nisem pa tega podrobno raziskoval tako da me ne držati za besedo. Sam bi se zadeve lotil tako, kot je že omenil ADF:
DECLARE @ImeTabele nvarchar(30)
DECLARE @Query nvarchar(1024)
SET @ImeTabele = N'ImeTabele' -- Ime tabele z neznanim tretjim stolpcem
SET @Query = N'SELECT ' + COL_NAME(OBJECT_ID(@ImeTabele), 3) + ' FROM ' + @ImeTabele
EXEC sp_executesql @Query
lp, David.
DECLARE @ImeTabele nvarchar(30)
DECLARE @Query nvarchar(1024)
SET @ImeTabele = N'ImeTabele' -- Ime tabele z neznanim tretjim stolpcem
SET @Query = N'SELECT ' + COL_NAME(OBJECT_ID(@ImeTabele), 3) + ' FROM ' + @ImeTabele
EXEC sp_executesql @Query
lp, David.
Sergio ::
Nasuntaj jih, naj v tabelo 'nonconformantnames' mecejo nova imena tistega stolpca, pa potem potegni ven vrednost in dobi podatke.
Ce to pomaga. :)
Ce to pomaga. :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
SeTAr ::
Zakaj pa stolpcev dokler ne programiraš (testiraš) imenuješ preprosto nevem tretjiStolpec, drugiStolpec ali karkoliže, ter jim daš taka imena tudi v tvoji testni bazi, potem, ko dobiš pa pravo bazo preprosto nardiš navaden raplace v text editorju in zamenjaš imena stolpcev v imena kot so v pravi bazi?
destiny ::
A uporabljaš query v programu, a gre za kak stored procedure al pa dts package?
Če zadevo zaganjaš iz programa, bi lahko neko temp data tabelo (oz. nek dataobject) napolnil z 0 ali 1 vrstico (npr. select top 1 * from blabla). Na ta način bi lohk prebral strukturo tabele, sistemskih sredstev pa ne bi veliko porabil.
Če zadevo zaganjaš iz programa, bi lahko neko temp data tabelo (oz. nek dataobject) napolnil z 0 ali 1 vrstico (npr. select top 1 * from blabla). Na ta način bi lohk prebral strukturo tabele, sistemskih sredstev pa ne bi veliko porabil.
destiny ::
Še ena varianta bi bla SELECT COL_NAME(OBJECT_ID('ime_tabele'), 2), kjer je 2 št. stolpca. select ti vrne ime stolpca, žal pa ne deluje kot nadomestilo za ime stolpca ala SELECT (SELECT COL_NAME(OBJECT_ID('ime_tabele'), 2)) FROM ime_tabele...
sem lih opazu da je to že en napisal
sem lih opazu da je to že en napisal
Zgodovina sprememb…
- spremenil: destiny ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL težavaOddelek: Programiranje | 5171 (4453) | joseti |
» | [Access] delete duplikatovOddelek: Programiranje | 1122 (1001) | mHook |
» | postgreSQL triggerOddelek: Programiranje | 1485 (1395) | WarpedGone |
» | c# vprasanjeOddelek: Programiranje | 1847 (1526) | user4683 |
» | SQL problem -GROUP BYOddelek: Programiranje | 1093 (1011) | tomi_m |