[PHP] 2 Tabellen in einer Abfrage...

Shampoo

~ Hello Nina ~
28 Dezember 2007
1.456
142
Hallo Community,

erstmal ein kurzes Beispiel....

PHP:
<?
mysql_query("SELECT * FROM webseiten ORDER BY LastVisit ASC");
?>

So, jetzt möchte ich in einer anderen Tabelle "mitglieder" abfragen ob der Benutzer der die Seite eingetragen hat auch noch genug Credits hat. Und nur die Seiten wo der Benutzer auch genug Credits hat soll ausgegeben werden...
 
Scha dir mal die Beschreibung über Join in der Mysql Hilfe an, da wirst du fündig.
Ungefähr so:

SELECT t1.feld1, t2.feld1 FROM tabelle1 as t1 LEFT JOIN tabelle2 as t2 ON t1.feldID = t2.feldID WHERE Feldcredits > 0;

Einfach mal ins Unreine geschrieben
 
SELECT t1.feld1, t2.feld1 FROM tabelle1 as t1 LEFT JOIN tabelle2 as t2 ON t1.feldID = t2.feldID WHERE Feldcredits > 0;

Ein LEFT OUTER JOIN ist hier unnötig. Ein INNER JOIN reicht völlig aus.
( Spätestens, wenn T2.Feldcredits auf > 0 abgefragt wird, werden alle <NULL>-Werte sowieso wieder rausgeschmissen )

Also ein:
SELECT benötigte-felder
FROM webseiten
INNER JOIN benutzer
ON webseiten.benutzerID = benutzer.ID
WHERE benutzer.credits >= ausreichend-hoch
ORDER BY LastVisit ;
 
Zuletzt bearbeitet:
Ich würde so rangehen:

PHP:
SELECT webseiten.* FROM benutzer,webseiten WHERE benutzer.credits > 0 AND webseiten.benutzerid = benutzer.id ORDER BY webseiten.LastVisit ASC

oder per LEFT JOIN
PHP:
SELECT webseiten.* FROM benutzer LEFT JOIN webseiten ON webseiten.benutzerid = benutzer.id WHERE benutzer.credits > 0 ORDER BY webseiten.LastVisit ASC

Also erst schauen, welche Benutzer überhaupt Credits haben, um die Results für den Speicher zu minimieren, und dann erst die Webseiten mit reinnehmen.
Macht Sinn, wenn es richtig viele Datensätze sind.

Greetz
DeeJay
 
@ DeeJay:

Deine zweite Query geht mit Sicherheit schief.
Was machst Du mit Benutzern, die zwar genügend Credits haben, aber zur Zeit keine Kampagne am Laufen ?
Hier würdest Du entsprechend viel Ergebniszeilen mit lauter <NULL>-Werten erzeugen.
 
Die Bedingung ist ja, dass man guckt, ob der User der Website noch Credits hat. Also bin ich davon ausgegangen, dass die User Webseiten haben.

Ansonsten hast Du recht ;)

Greetz