Subselect in einer MYSQL Abfrage
Sumy
- php
Also ich habe folgenendes vor:
<?php
$db = mysql_connect("localhost", "XXX", "XXX");
$res = mysql_db_query("dol",
"select Name, RealmLevel,(select guildname from guild where guildid=dolcharacters.guildid), RealmPoints, Class, Realm from dolcharacters where RealmLevel > 35 AND RealmLevel < 140 order by RealmPoints desc limit 0,10");
mysql_close($db);
while ($data=mysql_fetch_array($res))
{
echo "<center>";
echo "<table width=900>";
echo "<td width=150>";
if ($data["Realm"] == 1)
echo "Albion";
elseif ($data["Realm"] == 2)
echo "Midgard";
elseif ($data["Realm"] == 3)
echo "Hibernia";
echo "</td>";
echo "<td width=150>";
echo $data["Name"];
echo "</td>";
echo "<td width=150>";
echo $data["Guildname"];
echo "</td>";
echo "<td width=150>";
echo $data["RealmPoints"];
echo "</td>";
echo "<td width=150>";
if ($data["RealmLevel"] == 43)
echo "5L3";
echo "</td>";
echo "<td width=180>";
if ($data["Class"] == 10)
echo "Friar";
echo "</TD></TABLE>";
echo "</center>";
}
?>
allerdings irgendwie funzt es net so wie ich will es wir alles ausgegeben ausser der guild sache und das ist eigentlich das wichtige daran, kann mir vlt irgendwer meinen Fehler sagen?
Hallo,
Kann es sein, dass du in folgender zeile:"select Name, RealmLevel,(select guildname from guild where guildid=dolcharacters.guildid), RealmPoints, Class,
Anstelle des = ein LIKE schreiben müsstest?
zumindest verwende ich dort immer ein LIKE
Viele Grüße
Martin
Hallo,
Kann es sein, dass du in folgender zeile:"select Name, RealmLevel,(select guildname from guild where guildid=dolcharacters.guildid), RealmPoints, Class,Anstelle des = ein LIKE schreiben müsstest?
zumindest verwende ich dort immer ein LIKE
Viele Grüße
Martin
Warum denn ein guildid LIKE dolcharacters.guildid statt eines guildid=dolcharacters.guildid? Sieht doch nach einer ID-Abfrage aus und die sollte schon gleich sein...
Nick
Hallo,
Kann es sein, dass du in folgender zeile:"select Name, RealmLevel,(select guildname from guild where guildid=dolcharacters.guildid), RealmPoints, Class,Anstelle des = ein LIKE schreiben müsstest?
zumindest verwende ich dort immer ein LIKE
Viele Grüße
MartinWarum denn ein guildid LIKE dolcharacters.guildid statt eines guildid=dolcharacters.guildid? Sieht doch nach einer ID-Abfrage aus und die sollte schon gleich sein...
Nick
Das ist schon richtig allerdings sagt mir phpmyadmin das es nen syntax fehler ist
Das ist schon richtig allerdings sagt mir phpmyadmin das es nen syntax fehler ist
Wie genau lautet das SQL-Statement, das phpMyAdmin anmeckert und wie genau lautet die Fehlermeldung?
Siechfred
Das ist schon richtig allerdings sagt mir phpmyadmin das es nen syntax fehler ist
Wie genau lautet das SQL-Statement, das phpMyAdmin anmeckert und wie genau lautet die Fehlermeldung?
Siechfred
Er sagt nur es ist ein Fehler in der MySQL Syntax in Zeile 1 mehr leider nicht
echo $begrüßung;
Wie genau lautet das SQL-Statement, das phpMyAdmin anmeckert und wie genau lautet die Fehlermeldung?
Er sagt nur es ist ein Fehler in der MySQL Syntax in Zeile 1 mehr leider nicht
Im allgemeinen sagt die Fehlermeldung mehr aus, als du ihr möglicherweise entnehmen konntest. Zum Beispiel zitiert sie die genaue Stelle, an der der Parser aus dem Tritt kam. Kopier sie doch einfach mal im Ganzen hier rein. Und dann schau auch mal nach, welche Version des MySQL-Servers du vorliegen hast, Subselects gehen nämlich erst ab Version 4.1. (Wenn du Version 4.0 oder kleiner hast, kannst du dir das Hierherkopieren der Meldung natürlich sparen.)
echo "$verabschiedung $name";
Also ich habe folgenendes vor:
<?php
$db = mysql_connect("localhost", "XXX", "XXX");
$res = mysql_db_query("dol",
"select Name, RealmLevel,(select guildname from guild where guildid=dolcharacters.guildid), RealmPoints, Class, Realm from dolcharacters where RealmLevel > 35 AND RealmLevel < 140 order by RealmPoints desc limit 0,10");
[...]
allerdings irgendwie funzt es net so wie ich will es wir alles ausgegeben ausser der guild sache und das ist eigentlich das wichtige daran, kann mir vlt irgendwer meinen Fehler sagen?
Sehe ich das richtig, daß Du versuchst, einen SPALTENNAMEN als Ergebnis des Subselects zu gewinnen?
Nick
Hello,
MfG
Rouven
Versuche es mal mit folgender Abfrage:
SELECT dolcharacters.Name, dolcharacters.RealmLevel, guild.guildname, dolcharacters.RealmPoints, dolcharacters.Class, dolcharacters.Realm
FROM dolcharacters LEFT OUTER JOIN guild ON (guild.guildid=dolcharacters.guildid)
WHERE dolcharacters.RealmLevel BETWEEN 35 AND 140
ORDER BY dolcharacters.RealmPoints DESC LIMIT 0,10
ggf. kannst Du statt eines LEFT OUTER JOIN auch ein INNER JOIN verwenden, falls es immer einen Eintrag in der Tabelle guild geben muss.
MfG
GK