Tabellennamen mit Select auslesen

  • Themenstarter Themenstarter Blubdub
  • Beginndatum Beginndatum
B

Blubdub

Gast
Eigtl nicht unbedingt eine JAVA Frage, aber sollte dennoch im Anfängerbereich gut aufgehoben sein. Kann ich in mySQL mit einem SELECT Befehl den tabellennamen ausgeben lassen?

Sollte dann in etwa so aussehen:
SELECT tabellenname from datenbank oder verschiedenen tabellen innerhalb dieser where wert=5
 
Und googel oder die Forensuche hat nix ergeben? 😱

Entweder du selektierst auf den systables von MySQL oder "Show tables";
 
Aber show tables gibt mir immer nur alle tabellenname oder mit like tabellenname einen aus. Kann ich iwie die Spalten innerhalb der Tabellen abfragen?
also show tables where datenbank.tabelle.spalte=1?
 
Du kannst dir per
Code:
SHOW TABLES
die Tabellennamen geben lassen.
Danach kannst du für jede Tabelle mit
Code:
EXPLAIN Tablename
die Spalteninfos geben lassen.

Wofür brauchst du das?
 
Es wird doch nicht jede Tabelle deiner Datenbank die selbe Struktur haben. Du könntest dir mit UNION selber was zurecht basteln
 
In diesem Fall musst du die Systables befragen 😉

Alternativ: Show FIELDS FROM TABLE XXXX
 
Ich will aber nicht die Spalteninfos, sondern das was in einer bestimmten Spalte drinsteht. Diese existiert bei 2 Tabellen (ich weiß, normalisierung..). Ich will nun erreichen, dass er mit einem Befehl die Spalten bei beiden Tabellen durchsucht und von der Tabelle, in der der Wert existiert mir den Tabellennamen gibt.
 
Axo 😉

Dann musst du das sagen.

Dann einfach beide Tabellen joinen per union oder left join.

Das hängt von der jeweiligen Tabelle ab, was drin steht und wie die beiden in relation zu einander stehen.

Gruß,
Martin
 
SQL:
SELECT 'firsttbl' as TableName, COUNT(*) FROM firstTbl WHERE someRow = 666
UNION
SELECT 'secondtbl' as TableName, COUNT(*) FROM secondtbl WHERE someRow = 666
Oder eben die Anfragen nach deinem belieben abändern
 
SQL:
SELECT 'firsttbl' as TableName, COUNT(*) FROM firstTbl WHERE someRow = 666
UNION
SELECT 'secondtbl' as TableName, COUNT(*) FROM secondtbl WHERE someRow = 666
Oder eben die Anfragen nach deinem belieben abändern

Danke, ads sieht schon sehr gut aus; Die Möglichkeit als Ergebnis aber nur den Tabellennamen, in der die row=zahl, auszugeben besteht nicht?
 
Natürlich gibt es die:
SQL:
SELECT 'firsttbl' AS TableName FROM firstTbl WHERE someRow = 666 LIMIT 1
UNION
SELECT 'secondtbl' AS TableName FROM secondtbl WHERE someRow = 666 LIMIT 1
 
ok, jetzt hat sich ein weiteres Problem ergeben:
Java:
try{oeffneDB();
		ResultSet result1 = stmtSQL
		.executeQuery("SELECT 'table1' AS tabellenname FROM table1 WHERE someRow =('"+Objekt.getAttribut()+"') limit 1 UNION SELECT 'table2' AS tabellenname FROM table2 WHERE someRow =('"+Objekt.getAttribut()+"') limit 1");

		while(result1.next())
		{ tabellenauswahl = result1.getString("tabellenname");
			if(tabellenauswahl=="table1"){
				Methode1();
			}
			else if(tabellenauswahl=="table2")
			{
				Methode2();
			}
			else
			{System.out.println("Hilfe");}
[\JAVA]
Er gibt mir jetzt allerdings immer Hilfe aus, obwohl die tabellenauswahk doch aufjedenfall mit den namen "table1" oder "table2" übereinstimmen müssen, wo liegt der Fehler?
 
Java:
[code=Java]try{oeffneDB();
ResultSet result1 = stmtSQL
.executeQuery("SELECT 'table1' AS tabellenname FROM table1 WHERE someRow =('"+Objekt.getAttribut()+"') limit 1 UNION SELECT 'table2' AS tabellenname FROM table2 WHERE someRow =('"+Objekt.getAttribut()+"') limit 1");

while(result1.next())
{ tabellenauswahl = result1.getString("tabellenname");
if(tabellenauswahl=="table1"){
Methode1();
}
else if(tabellenauswahl=="table2")
{
Methode2();
}
else
{System.out.println("Hilfe");}
so lässts sichs besser lesen, sry
 
Wenn man schon mit der Datenbanken arbeitet, könnte man wissen, dass Strings mit
Code:
equals
verglichen werden.
 

Neue Themen


Zurück
Oben