-
SQL Abfrage aus 2 Tabellen
Hallo
Wie kann ich mit MySQL eine Abfrage machen, aus der alle Daten aus 2 Tabellen abgefragt werden?
Also so etwas wie "select * from table" nur mit 2 Tabellen.
-
Wenn die Tabellen richtig aufgebaut sind (Relationen) kannst du das mit einem LEFT JOIN Befehl machen. Schau mal unter www.little-idiot.de/mysql/ , da gibt's auch eine Online-Suche mit der du nach dem Befehl suchen kannst. Eine Beschreibung der Tabellen müsste ich schon wissen, um genaueres sagen zu können.
-
Hi
Bei Little-Idiot war ich schon, so ganz Blick ich da nicht durch...
Also die zwei Tabellen sind identisch aufgebaut: 5 Spalten (id, interpret, titel, medium, bemerkungen).
-
Registrierter Benutzer
hi,
versuche mal folgendes:
select * from table1,table2;
oder auch bei bestimmten feldern:
select table1.feld1,table2.feld2,table2.* from table1,table2 where table1.userid=table2.kdnr;
sind nur beispiele...musste schon selbst noch anpassen...
oliver
-
Hab ich auch schon probiert, aber ich bekomme immer nur die Daten aus der ersten Tabelle (also die, die vorne steht).
-
Registrierter Benutzer
wie sehen denn die tabellen (spalten-namen) und das sql-statement aus?
oliver
-
Also folgendes:
Beide Tabellen sind folgendermaßen aufgebaut: 3 Spalten (id, interpret, titel), Tabelle 1 heißt "mp3_1", Tabelle 2 heißt "mp3_2".
Erstes SQL-Statement sieht so aus:
SELECT * FROM mp3_1,mp3_2;
Dann bekomm ich immer nur die Daten aus der Tabelle, die vorne steht (mp3_1).
SELECT mp3_1.id,mp3_2.id FROM mp3_1,mp3_2;
Hier ist das Problem, dass ich einzelne Spalten aus beiden Tabellen nebeneinander ausgegeben bekomme. Also erste Spalte ist id Feld von mp3_1, zweite Spalte ist id Feld von mp3_2 usw.
Ich will das ganze aber Zeilenweise ausgegeben bekommen, also Zeilen aus der ersten Tabelle und dann die Zeilen aus der zweiten Tabelle.
-
Hi,
also wenn ich es richtig verstehe, willst du erste beide Tabellen kombinieren und dann eine Abfrage machen, um die gewünschten Daten zu erhalten?
Hierfür gibt es kein Statement.
Alles was meine Vorredner angesprochen haben, ist nur mit Referenzen möglich, d.h. es gibt zei Tabellen verschiedene Daten und zusätzlich eine Referenz (z.B. eine ID) ie in beiden Tabellen pro Datensatz gleich ist.
Das ganze sieht mir auch fast so aus, als wenn Du Dir mal über Dein Datenbankdesign Gedanken machen solltest, d.h. beide Tabellen kombinieren.
Wenn dies aus irgendwelchen Gründen überhaupt nicht geht, dann bleibt Dir wohl nur der Weg über zwei getrennte Abfragen, dann die beide Ergebnisse zu kombinieren. Oder eben erst beide Tabellen kombinieren (notfalls über eine temporäre Tabelle) und dann die eine Abfrage durch zu führen.
-= Pingu =-
-
Wie verhaelt es sich aber dann, wenn die Tabellen nicht verknuepft sind?
So zum Beispiel
Tabelle admin
enthaelt Formatierungen usw.
abgefragt werden soll
SELECT * FROM admin
Tabelle daten
enthaelt die Daten
abgefragt werden soll
SELECT * FROM daten ORDER BY id DESC
Nun will ich in einem Dokument die kompletten Daten von daten ausgeben (z.B. News mit Datum, Titel und Autor) und die Formatierung soll aus der admin ausgelesen werden (z.B. Schriftart, Schriftfarbe usw.)
Kann ich denn dann ein
SELECT daten.*, admin.* FROM daten ORDER BY id DESC, admin
vornehmen? Oder habe ich da was nicht verstanden?
Sorry, ich bin wirklich noch blutiger Anfaenger
-
Registrierter Benutzer
Also wenn du sowas machst, dann kommt im normalfall riesen schrott raus, weil er jeden Datensatz aus Tabelle 1 mit jedem Datensatz aus Tabelle 2 verknüpft....
Mal abgesehen davon funktioniert dein Statement eh nicht... wenn dann müsste es so in der Art heissen:
SELECT d.*, a.* FROM daten AS d, admin AS a ORDER BY a.id DESC
Das was du ursprünglich machen willst, nämlich zwei Tabellen miteinander verknüpfen ist wie oben schon gesagt mit einem LEFT JOIN zu realisieren!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen