SQL Abfrage erweitern
Holger Ahlrichs
- datenbank
0 Ilja
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
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
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
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
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