# Tabellennamen mit Select auslesen



## Blubdub (29. Mai 2011)

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


----------



## Marcinek (29. Mai 2011)

Und googel oder die Forensuche hat nix ergeben? 

Entweder du selektierst auf den systables von MySQL oder "Show tables";


----------



## faetzminator (29. Mai 2011)

Wie Marcinek bereits sagte, [c]SHOW TABLES[/c] ist der gesuchte Befehl.
MySQL :: MySQL 5.0 Reference Manual :: 12.4.5.34 SHOW TABLES Syntax


----------



## Blubdub (29. Mai 2011)

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?


----------



## XHelp (29. Mai 2011)

Was soll die Anfrage deiner Meinung nach für ein Resultat bringen? oO


----------



## Blubdub (29. Mai 2011)

Den Namen der Tabelle in der der Wert existiert


----------



## Gast2 (29. Mai 2011)

Du kannst dir per 
	
	
	
	





```
SHOW TABLES
```
 die Tabellennamen geben lassen.
Danach kannst du für jede Tabelle mit 
	
	
	
	





```
EXPLAIN Tablename
```
 die Spalteninfos geben lassen.

Wofür brauchst du das?


----------



## XHelp (29. Mai 2011)

Es wird doch nicht jede Tabelle deiner Datenbank die selbe Struktur haben. Du könntest dir mit UNION selber was zurecht basteln


----------



## Marcinek (29. Mai 2011)

In diesem Fall musst du die Systables befragen 

Alternativ: Show FIELDS FROM TABLE XXXX


----------



## Blubdub (29. Mai 2011)

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.


----------



## Marcinek (29. Mai 2011)

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


----------



## XHelp (29. Mai 2011)

```
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


----------



## Blubdub (29. Mai 2011)

XHelp hat gesagt.:


> ```
> SELECT 'firsttbl' as TableName, COUNT(*) FROM firstTbl WHERE someRow = 666
> UNION
> SELECT 'secondtbl' as TableName, COUNT(*) FROM secondtbl WHERE someRow = 666
> ...



Danke, ads sieht schon sehr gut aus; Die Möglichkeit als Ergebnis aber nur den Tabellennamen, in der die row=zahl, auszugeben besteht nicht?


----------



## XHelp (29. Mai 2011)

Natürlich gibt es die:

```
SELECT 'firsttbl' AS TableName FROM firstTbl WHERE someRow = 666 LIMIT 1
UNION
SELECT 'secondtbl' AS TableName FROM secondtbl WHERE someRow = 666 LIMIT 1
```


----------



## Blubdub (29. Mai 2011)

super, danke!


----------



## Blubdub (29. Mai 2011)

ok, jetzt hat sich ein weiteres Problem ergeben:

```
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?
```


----------



## Blubdub (29. Mai 2011)

```
[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


----------



## XHelp (29. Mai 2011)

Wenn man schon mit der Datenbanken arbeitet, könnte man wissen, dass Strings mit 
	
	
	
	





```
equals
```
 verglichen werden.


----------

