Holger Ahlrichs: SQL Abfrage erweitern

Hallo zusammen,
ich möchte folgende SQL Abfrage erweitern:

SELECT products.nr, products.name, products.description, products.sellingprice,
(SELECT mmedia_attribute.value
      FROM mmedia_attribute
      WHERE mmedia_attribute.attributenr='1011'
      AND mmedia_attribute.productnr = products.nr
   )AS imagegif

FROM (products INNER JOIN (catalog LEFT JOIN string_catalogattr ON catalog.catalognr = string_catalogattr.catalog) ON products.nr = catalog.productnr) LEFT JOIN catalogattr ON string_catalogattr.attribute = catalogattr.nr
WHERE ((products.special=1) AND (products.shopproduct=1) AND (catalogattr.name="shop_nr") AND (string_catalogattr.value="1"))

hierbei möchte ich einen zusätzlichen wert abfrufen der folgendes attribut hat: mmedia_attribute.attributenr='1013'

irgendwie verstrickt ich mich dabei ;(

Danke und Gruß
Holli

  1. yo,

    hierbei möchte ich einen zusätzlichen wert abfrufen der folgendes attribut hat: mmedia_attribute.attributenr='1013'

    attribut ist ein anderer begriff für spalte. deswegen ist deine aussage ein wenig verwirrend. was du meinst ist eine Bedingung. aber egal, es kommt sehr stark darauf an, was du mit zusätzlich meinst. wenn es sich um eine weitere einschränkung hält, kannst du die bedingungen mit AND in der WHERE Klausel verknüpfen. wenn zusätzlich eine andere bedeutung hat, dann sag doch noch einmal genauer, was du damit meinst.

    Ilja

    1. Hallo Ilja,
      ersteinmal Danke für Deine Antwort und sorry das ich mich so verwirrend ausgedrückt habe.

      Eine weitere Einschränkung soll es nicht sein. Es sollte das weiteres select mmedia_attribute.value sein, das dann aber die Bedingung mmedia_attribute.attributenr='1013' hat

      Die Werte werden anschließend in ein Array gepackt!

      Z.Zt. sieht es so aus das ich das, das erste select mmedia_attribute.value mit der Bedingung  mmedia_attribute.attributenr='1011' unter $row[4] wiederfinden kann. Ich möchte aber ein zweites mmedia_attribute.value in row[5] wiederfinden, wobei hier die Bedingung mmedia_attribute.attributenr='1013' ist !

      Um den Zusammenhang zur erkenne hier der vollständige Code:
      sub QueryHotDeals
      {
          my($limit) = @_;

      $res = DBConnect();
            $sSQLQuery = <<EOS;
      SELECT products.nr, products.name, products.description, products.sellingprice,
      (SELECT mmedia_attribute.value
            FROM mmedia_attribute
            WHERE mmedia_attribute.attributenr='1011'
            AND mmedia_attribute.productnr = products.nr
         )AS imagegif

      FROM (products INNER JOIN (catalog LEFT JOIN string_catalogattr ON catalog.catalognr = string_catalogattr.catalog) ON products.nr = catalog.productnr) LEFT JOIN catalogattr ON string_catalogattr.attribute = catalogattr.nr
      WHERE ((products.special=1) AND (products.shopproduct=1) AND (catalogattr.name="shop_nr") AND (string_catalogattr.value="1"))
      EOS
          $res = DBDoSQL($sSQLQuery);
          my($i) = 0;
          my(@list);
          my (@row);

      while (@row = DBNextRow())
          {
             foreach $j (0..$#row)
              {
                  $list[$i][$j] = $row[$j];
              }
              $i++;

      last if ($i == $limit);
          }
          DBDisconnect();
          AddContent(&BuildHTML(@list));
         return(1);
      }

      Danke und Gruss
      Holli

      1. yo,

        ersteinmal Danke für Deine Antwort und sorry das ich mich so verwirrend ausgedrückt habe.

        naja, entschuldigen geht zu weit. der sinn des richtigen sprachgebrauchs liegt ja nicht darin, jemanden regeln aufzuzwingen, sondern dass man schnell vom gleichen spricht, eine bessere kommunikation sozusagen, wobei ich meine vielen tippfähler mal expliziet ausnehmen. ;-)

        Eine weitere Einschränkung soll es nicht sein. Es sollte das weiteres select mmedia_attribute.value sein, das dann aber die Bedingung mmedia_attribute.attributenr='1013' hat

        aha, also in der unterabfrage soll bei einem bestimmten datensatz die bedingung anstelle von mmedia_attribute.attributenr='1011' diese bedingung mmedia_attribute.attributenr='1013' gelten. Habe ich das richtig verstanden ?

        wenn ja, musst du das in einer art "if unterscheidung" unterbringen, wobei die verzweigung von dem wert des aktuellen datensatz abhängig ist. das sollte in groben zügen der weg sein. einfach mal in deinen docus oder im netz nachschauen, wie man verzweigt.

        Ilja

        1. wenn ja, musst du das in einer art "if unterscheidung" unterbringen, wobei die verzweigung von dem wert des aktuellen datensatz abhängig ist. das sollte in groben zügen der weg sein. einfach mal in deinen docus oder im netz nachschauen, wie man verzweigt.

          Ilja

          Alles klar,
          hab schon mal das Buchwerk rausgepackt
          hab vielen dank
          Holli