Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL: Spalte für Spalte SQL intern abarbeiten

Empfohlene Antworten

Veröffentlicht

Hallo miteinander,

ich habe in SQL ein Problem. Mir liegt eine Tabelle vor, in der sich täglich die Spaltenanzahl verändern kann. Die einzigen statischen Spalten sind MitarbeiterNr und ZeilenTyp. Konkret geht es um eine Programm-Berechtigungstabelle.

Wenn nun ein neues Programm geschrieben wurde, muss es natürlich als neue Spalte in die Tabelle eingefügt werden... Dann müsste ich aber auch jedesmal die SQL-Abfrage dementsprechend anpassen. Sprich: Das muss automatisch gehen.

Nun suche ich nach einer Möglichkeit z.B. mit einer SQL internen FOR EACH Schleife Spalte 3 bis "n" abzuklappern. Bin bisher allerdings zu keiner vernünftigen Lösung gekommen und bin recht verzweifelt.

Alles nur, weil mir mein Ausbilder Recordsets verboten hat...

MfG Arnie

Originally posted by Arnie

ich habe in SQL ein Problem. Mir liegt eine Tabelle vor, in der sich täglich die Spaltenanzahl verändern kann. Die einzigen statischen Spalten sind MitarbeiterNr und ZeilenTyp. Konkret geht es um eine Programm-Berechtigungstabelle.

Wenn nun ein neues Programm geschrieben wurde, muss es natürlich als neue Spalte in die Tabelle eingefügt werden...

Offengestanden klingt das eher nach einem fragwürdigen Datenmodell.

hi,

was hat dein ausbilder denn zum auslesen einer datenbank erlaubt?

prinzipiell kann man ja schon mit 'select * from ...' alle spalten auslesen, und sich dann durch die spalten hangeln. und die spaltennamen liefert eine datenbank normalerweise auch auf anfrage (je nach provider unterschiedlich)

btw, das design koennt echt schoener sein...

bist du sicher, dass es sich um die spaltenzahl handelt?? dann hat dein datenbank entwickler mist gebaut, denn sowas sollte normalerweise niemals auftreten.

sql ist aber definitiv nicht zum linearen abarbeiten einzelner zeilen erfunden worden, d.h. du brauchst ne programmiersprache die dir das realisiert.

jedoch wuerde ich mir das konzept nochmal genauer ansehen, analysieren und schauen wie man das problem beheben kann, indem man fixe tabellen verwendet.

so long

Das Design habe ich mir nicht ausgesucht.

Es muss doch in SQL eine Möglichkeit geben Spalte für Spalte automatisch durchzugehen... In VB habe ich das ja bereits mit einem Recordset gelöst, doch Cheffe will dat nicht.

Tabelle ms_berechtigungen

- MNr

- ZeilenTyp

- Prog1

- Prog2

- Prog3

- ...

MfG Arnie

ich kenne keine moeglichkeit, wie man mit native sql weder spalten noch zeilen nacheinander durchgehen kann.

da brauchst dazu eine programmiersprache.

datenbanknah: PL/SQL (oracle) (sowas aehnliches gibt es auch von ms, keine ahnung wie das heisst)

anwendung ueber schnittstellen: ODBC, JDBC, native Treiber.

so long

Hallo Arnie!

Welche Datenbank benutzt Du denn? Je nach Datenbank gibt es sehr verschiedene Methoden um die Anzahl und/oder Namen der Spalten abzufragen. Wenn wir wissen welche DB Du benutzt kann Dir sicher jemand helfen!

Gruß Pointerman

Habe die Lösung gefunden, wenn auch etwas umständlich, jedoch geht es in Verbindung mit VB so einigermaßen flott.

Um das zusätzliche Recordset bin ich auf diese Weise leider nicht drum rum gekommen, aber diese Abfrage zu Beginn lahmt wenigstens nicht...

SELECT syscolumns.Name
FROM dbo.syscolumns
INNER JOIN
dbo.sysobjects
ON dbo.sysobjects.id = dbo.syscolumns.id
WHERE dbo.sysobjects.name = 'ms_tabellenname'
ORDER BY syscolumns.name[/PHP]

MfG Arnie

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.