PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Abfrage aus 2 Tabellen



Daniel666
31-10-2001, 19:39
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.

xstevex22
31-10-2001, 20:20
Wenn die Tabellen richtig aufgebaut sind (Relationen) kannst du das mit einem LEFT JOIN Befehl machen. Schau mal unter www.little-idiot.de/mysql/ (http://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.

Daniel666
31-10-2001, 20:57
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).

lolli
31-10-2001, 21:19
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

Daniel666
31-10-2001, 21:22
Hab ich auch schon probiert, aber ich bekomme immer nur die Daten aus der ersten Tabelle (also die, die vorne steht).

lolli
01-11-2001, 10:31
wie sehen denn die tabellen (spalten-namen) und das sql-statement aus?

oliver

Daniel666
02-11-2001, 19:27
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.

Pingu
02-11-2001, 19:39
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 =-

chavez4k
16-12-2002, 23:53
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 :)

Gaert
17-12-2002, 00:19
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!