2 Tabellen abfragen ?

SebiPuck

Erfahrenes Mitglied
Hallo,
Ich habe mich schon mittels Google bemüht, leider verstehe ichd as mit den Joins etc. nicht so wirklich.

Mein Problem:

Code:
$table = mysql_query("SELECT * FROM timeline WHERE filter='0'");
while($row = mysql_fetch_assoc($table))
                    {

Darunter will ich nun mit $row["spaltenname"]
auf beide Tabellen zugreifen können und das ganze weiter verarbeiten können.

Folgende Tabellen sind betroffen:

* FROM timeline WHERE filter='0'

und

* FROM login WHERE user='$user'

das ganze kann ich nicht verschachteln, sprich 2 while schleifen nutzen.

Bitte könnte mir jemand den Code so anpassen, dass er "richtig" funktioniert ?
Falls jemand einen hat, dann bitte ZUSÄTZLICH auch noch einen Link zu nem Tutorial :)
Danke im Voraus,
LG
 
Arbeiten wir doch am Verständnis für JOINs. Nehmen wir mal an, du hast in der Tabelle timeline eine Spalte mit dem Namen user_id. In der Tabelle login hast du eine Spalte mit dem Namen id. In timeline.user_id steht der Wert für die id des jeweiligen Users. Du hast also zu jedem Datensatz in timeline einen zugehörigen Datensatz in login. Jetzt möchtest du alle Datensätze, die in timeline drin sind, zu einem bestimmten User gehören, von dem dir nur der Name bekannt ist. Dann wäre die Verbindung timeline.user_id = login.id. Und das bilden wir mit einem JOIN ab. Zunächst mal die einfache Variante:

SQL:
SELECT * FROM timeline
INNER JOIN login ON timeline.user_id = login.id;

Damit bekommst du alle Datensätze aus timeline und user, die eine Verbindung über die Benutzer-ID haben. Das kannst du dann mittels WHERE-Bedingung auf das einschränken, was du wirklich brauchst:

SQL:
SELECT * FROM timeline
INNER JOIN login ON timeline.user_id = login.id
WHERE login.user = 'SebiPuck';

Und wenn du nun jetzt nur noch die Daten haben willst, die in timeline drin stehen:

SQL:
SELECT timeline.* FROM timeline
INNER JOIN login ON timeline.user_id = login.id
WHERE login.user = 'SebiPuck';

Und da dich nur Einträge aus timeline interessiere, in denen der Wert der Spalte filter auf '0' steht, erweiterst du die WHERE-Bedingung entsprechend:

SQL:
SELECT timeline.* FROM timeline
INNER JOIN login ON timeline.user_id = login.id
WHERE login.user = 'SebiPuck'
AND login.filter = '0';

Ist doch eigentlich gar nicht so schwer. Oder wo hakt es?
 
Zurück