MySQL Abfrage 2er Tabellen - Problem

Andre_d

Mitglied
Hallo zusammen.

Ich habe 2 Tabellen in der Datenbank wie folgt abgespeichert:

[Character]
id...name...level
1...peter....21
2...figo......45
3...astral...33
4...rouler...12

[quests]
id...name...quest
1....peter....[12] Testquest
2....astral...[57] Noch eine Quest
3....rouler...[2] Startquests

ich lese diese beiden Tabellen wie folgt aus:

PHP:
$abfrage = mysql_query("SELECT * FROM character,quests WHERE character.name = quests.name ORDER BY id");
while($abfrage_data = mysql_fetch_array($abfrage)){

So, das funktioniert auch alles wunderbar. Nur werden in diesem Falle nur die Chars aufgelistet die in der Tabelle [quests] auch vermerkt sind. In diesem Falle werden also 3 Datensätze ausgelesen und ausgegeben.

Ich möchte aber alle Datensätze auslesen, auch die welche in den Quests keine Daten gespeichert haben. Ist das irgendwie möglich? Würde mich ein ganzes Stück weiterbringen!

Freue mich auf Antwort!

liebe Grüße
André
 
Ah vielen Dank für diesen Tipp! Funktioniert so wie ich es haben wollte.
Nur habe ich noch ein kleines Problem bei der Ausgabe:

PHP:
$abfrage = mysql_query("SELECT * FROM character LEFT JOIN quests ON character.name = quests.name ORDER BY id");
while($abfrage_data = mysql_fetch_array($abfrage)){

Wenn ich nun mittels ..

PHP:
echo $abfrage_data[charname]; // Character name ausgeben

..versuche den Namen auszugeben, dann bekomme ich nur die Namen, welche auch in der Tabelle [quests] Einträge haben.

Läuft da noch vieleicht etwas falsch? Bei solchen Tutorials, steht die Syntax und Vorgehensweisen meist gut drin, nur vermisse ich oft, etvl. Ausgaben der Daten per echo o.Ä. ..

liebe Grüße
André :)
 
Hi,

Wenn ich nun mittels ..

PHP:
echo $abfrage_data[charname]; // Character name ausgeben

..versuche den Namen auszugeben, dann bekomme ich nur die Namen, welche auch in der Tabelle [quests] Einträge haben.

das liegt daran, dass Du alle Felder per * auswählst. Dann ist im Result das Feld 'name' doppelt und falls in Quests kein passender Datensatz gefunden wurde, sind die Felder aus quests NULL. Gib also lieber eine Feldliste an. Den Namen brauchst Du doch nur einmal... ;)

LG
 
Super hat wunderbar funktioniert!

Für die jenigen die hier vieleicht eine Antwort suchen, meine Lösung:

muss halt im Select, das Feld mit dem Tabellen namen angeben wie in diesem Fall:

character.name

PHP:
$abfrage = mysql_query("SELECT character.name,level,quest FROM character LEFT JOIN quests ON character.name = quests.name ORDER BY id");
while($abfrage_data = mysql_fetch_array($abfrage)){

Ich Danke Dir kuddeldaddeldu! :)

Eine schönen Abend und besinnliche Feiertage!
 
Zurück