# Klassische Frage: Mehrere Tabellen abfragen... (verzweifle etwas)



## Taros (26. Januar 2005)

Hallo zusammen,

ich habe hier schon mehrfach Antworten auf das Thema gelesen, aber vielleicht kann mir ja doch noch jemand helfen, da ich die bisherigen Antworten nicht auf meine Situation ableiten konnte. Die offizielle MySQL Anleitung ist mir da irgendwie nicht wirklich verständlich genug. Folgendes:

Ich habe mehrere Tabellen in einer Datenbank. Um genau zu sagen Drei.
Alle drei Tabellen sind identisch aufgebaut.
Ich möchte nun alle drei Tabellen als Grundlage für eine Auswahl nehmen und die Auswal sortieren.
Der Aufbau des Befehls sollte in etwa so aussehen:

SELECT *
FROM tabelle1, tabelle2, tabelle3
WHERE geburtstag_mm = 'januar"
ORDER BY name ASC

Kann mir jemand helfen?
Wenn ich in der WHERE Anweisung die tabellen vorher mit angebe, dann geht es auch aber sehr sehr langsam.

Wie kann ich die drei Tabellen zu einer einzigen Virtuellen verknüpfen und sie dann als Eine behandeln, um die Abfrage schneller zu gestalten? Geht sowas? Eine logische Erklärung wäre da sehr hilfreich.

Gruß
Chris


----------



## Nico Graichen (26. Januar 2005)

ich weiß jetzt nicht, ob es bei MySQL Views gibt, aber wenn ja, mach doch einen VIEW über die drei Tabellen, und mach dann das SELECT auf den VIEW.

Mir stellt sich nur die Frage, für was man in einer DB 3 identische Tabellen braucht?
Wenn in den 3 Tabellen das selbe steht, kannst du es doch auch in eine schreiben.


----------



## XChris (26. Januar 2005)

Holla Taros!



> Die offizielle MySQL Anleitung ist mir da irgendwie nicht wirklich verständlich genug.



Findest Du? Ich finde, das die MySQL Anleitung so ziehmlich eine der besten Anleitungen ist, die man so als Entwickler erhalten kann. Vielleicht solltest Du mal bissel über RDBMS lesen. So ganz allgemein.


```
SELECT *
FROM tabelle1, tabelle2, tabelle3
WHERE geburtstag_mm = 'januar"
ORDER BY name ASC
```

Schau mal genau hin. Du verwendest DREI Tabellen und hast nur EINE Bedingung. Man braucht mind. pro Relation auch ne Abfrage, wenns eindeutig werden soll.
Außerdem .... auf welche Spalte bezieht sich der Geburtstag? Viellicht sollte das SQL Statement eher so aussehen:


```
SELECT t1.SpalteXY,  t1.SpalteXZ, t2.SpalteAA
FROM tabelle1 as t1, tabelle2 as t2, tabelle3 as t3
WHERE t1.geburtstag_mm = 'januar"  and
t1.id = t2.fremdschluessel and t2.id = t3.NochEinFremdschluessel
ORDER BY t1.name ASC
```

Viel Glück und vorallem: Nicht Aufgeben und viel lesen.

Chris


----------



## Taros (26. Januar 2005)

Vielen Dank für die Hilfe,

ich habe mich vorhin entschieden, die Tabellen doch einzeln abzufragen. Aber die Sache mit der Verknüpfung werde ich mir noch einmal bei Zeiten vornehmen.

Keep creative!
Chris


----------

