» »

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č

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.

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

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.

Sergio ::

Nasuntaj jih, naj v tabelo 'nonconformantnames' mecejo nova imena tistega stolpca, pa potem potegni ven vrednost in dobi podatke.

Ce to pomaga. :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
č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.

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 :8)

Zgodovina sprememb…

  • spremenil: destiny ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL težava

Oddelek: Programiranje
364558 (3840) joseti
»

[Access] delete duplikatov

Oddelek: Programiranje
51045 (924) mHook
»

postgreSQL trigger

Oddelek: Programiranje
51417 (1327) WarpedGone
»

c# vprasanje

Oddelek: Programiranje
171726 (1405) user4683
»

SQL problem -GROUP BY

Oddelek: Programiranje
71038 (956) tomi_m

Več podobnih tem