PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit MySQL Dynamisch bestimmen,welche Tabelle benutzt werden soll



michael.becker
24-02-2006, 11:46
Hallo,

ich habe derzeit ein kleines SQL Problem:

Ich möchte mit MySQL durch eine MAPPING Tabelle festlegen, aus welcher Tabelle daten geladen werden sollen!

Hintergrund:

Ich habe in meiner Applikation für Testzwecke 2 verschiede Überwachungsmonitore:

Der Eine Überwacht HTTP, der andere SSH

Mein Tabellenkonstrukt sieht derzeit so aus:


HTTPMonitor(ID , URLprefix , MonitorID)
SSHMonitor(ID , sshLogin,sshPassword , sshCommand , MonitorID)
Monitor(MonitorID , IP , Port)

Also die Beiden Konkreten Monitore HTTPMonitor und auch SSHMonitor bekommen ihre allgemeinen Infos noch zusätzlich aus der Monitor Tabelle.

So weit ja auch kein Problem.

Jetzt habe ich das Problem, das ich von der Applikation aus nicht weis, bzw nicht direkt wissen will, in welcher ich gucken muss..

Dafür habe ich mir eine Extra Tabelle erstellt:


Mapping(Applikation_Name , Table_Name)



In diese Tabelle geht nun meine Applikation rein, bekommt über ihren Name eine Tabelle zugewiesen und soll diese nun Abfragen.

Syntax der Abfrage wäre also:



SELECT * FROM (SELECT table_name FROM mapping WHERE applikation_name ="Der Applikationsname")


Leider bekomme ich dabei imemr den Fehlercode
"#1248 - Every derived table must have its own alias"

Geht es überhaupt, das ich "dynamisch" aus einer Tabelle auslese, welche ich als nächstes benutzen muss??

Romanday
25-02-2006, 07:20
Geht es überhaupt, das ich "dynamisch" aus einer Tabelle auslese, welche ich als nächstes benutzen muss??

MySQL kennt auch die IF Anweisung.
Ob das damit möglich ist, kann ich nicht sagen.

So was macht man viel bequemer mit einer Script o. Programmiersprache.
Was ist, wenn noch mehr komplexe verschachtelte Prüfungen vorher
ausgeführt werden sollen? Dafür ist eine SQL Anweisung bestimmt nicht
geeignet.

RHBaum
07-03-2006, 16:52
Hab lange nix mehr mit SQL gemacht ....

Aber du koenntest dir auch ...nen Select aus der tabelle 1 und 2 bauen, wo an erster stelle fix der Tabellenname steht, beide selects per union verbinden und den tabellennamen auf die fixe spalte in der wehre klausel aufnehmen ^^

Aber mal ehrlich, SQL ist dafuer da das man sich Statements zusammenbaut und diese auf die DB schiesst, dass alles hoch dynamisch ... deinen SQL string dynamisch anzupassen sollt doch die richtige Wahl sein ....

Ciao ...

Romanday
08-03-2006, 07:10
Aber mal ehrlich, SQL ist dafuer da das man sich Statements zusammenbaut und diese auf die DB schiesst, dass alles hoch dynamisch ... deinen SQL string dynamisch anzupassen sollt doch die richtige Wahl sein ....

Ciao ...

Auf den ersten Blick schon, aber...

- Was ist mit String Prüfungen, bevor in die DB geschrieben wird?
- Mysql kennt auch kein elseif.
- Später möchte der Admin vielleicht bei einem bestimmten
Ereignis eine eMail versenden?

Da hat doch SQL seine Grenzen...:D

RHBaum
27-03-2006, 10:11
Da hat doch SQL seine Grenzen...
Ja definitiv, SQL soll dir ja auch kein richtiges Userprogramm ersetzen ^^


- Was ist mit String Prüfungen, bevor in die DB geschrieben wird?
- Mysql kennt auch kein elseif.
- Später möchte der Admin vielleicht bei einem bestimmten
Ereignis eine eMail versenden?
Das ist definitiv keine Aufgabe von SQL ... sondern sprache / scripts, die auch das SQL nur nutzen ....

Ciao ...