Sumy: Subselect in einer MYSQL Abfrage

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?

  1. 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

    1. 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

      --
      --------------------------------------------------
      http://www.xilp.eu
      XILP Internet Links People
      Dein persoenliches privates Netzwerk
      aus Freunden, Verwandten, Bekannten und Kollegen.
      --------------------------------------------------
      1. 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

        Das ist schon richtig allerdings sagt mir phpmyadmin das es nen syntax fehler ist

        1. 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

          --
          Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
          1. 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

            1. 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";

  2. 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

    --
    --------------------------------------------------
    http://www.xilp.eu
    XILP Internet Links People
    Dein persoenliches privates Netzwerk
    aus Freunden, Verwandten, Bekannten und Kollegen.
    --------------------------------------------------
  3. Hello,

    1. auf was hast du error_reporting eingestellt?
    2. hast du dein Statement mal in PHPMyAdmin laufen lassen?
      Ich könnte mir z.B. vorstellen, dass deine Abfrage nur einfach nicht die Spalte 'guildname' zurückliefert, sondern einen neuen Namen vergibt. Sollte dem so sein, dann probiere es mittels Alias ( SELECT .., .., (SELECT...) AS )

    MfG
    Rouven

    --
    -------------------
    Inter Arma Enim Silent Leges  --  Cicero
  4. 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