Mysql Where Klausel - Rückgriff auf Alias in SELECT
Christopher Reimann
- datenbank
0 Vinzenz Mai0 Chris
Hi,
ich habe in meinem Select Statement einen verschachtelten Aufruf, der über einen Alias zu identifizieren ist. In der Where-Klausel will ich jetzt sicherstellen, dass die Rückgabe größer gleich 1 ist. Wie referenziere ich den Rückgabewert in der Where-Klausel? Alleine der Alias funktioniert leider nicht!
Hier der Dummy:
SELECT
`main`.`id` AS `id`
,`main`.`name` AS `name`
, (SELECT COUNT(*) FROM `productitem` WHERE `product_id`=75 AND `isnew`=1) AS `num_new`
FROM `product` AS `main`
WHERE
`num_new` >= 1
ORDER BY `main`.`style_code`
LIMIT 0,100
;
Der originale Query:
SELECT
`main`.`id` AS `id`
,`main`.`price` AS `price`
,`main`.`name` AS `name`
,`main`.`style_code` AS `style_code`
,`main`.`kind_id` AS `kind_id`
,`main`.`isActive` AS `isActive`
,`pi`.`fname_img1` AS `fname_img`
,`dept`.`name` AS `department`
,`cat`.`name` AS `category`
,`brand`.`name` AS `brand`
, (SELECT COUNT(*) FROM `productitem` WHERE `product_id`=75 AND `isnew`=1) AS `num_new`
FROM `product` AS `main`
LEFT JOIN `department` AS `dept`
ON `main`.`department_id` = `dept`.`id`
LEFT JOIN `category` AS `cat`
ON `main`.`category_id` = `cat`.`id`
LEFT JOIN `brand`
ON `main`.`brand_id` = `brand`.`id`
LEFT JOIN `productitem` AS `pi`
ON `main`.`productitem_id` = `pi`.`id`
WHERE
`main`.`category_id` IN(79,90,89,133,134,151,90,89,133,134,151)
AND
LOWER(`main`.`style_code`) LIKE '%10b-solid%'
AND
`num_new` >= 1
ORDER BY `main`.`style_code`
LIMIT 0,100
;
Hallo Christopher,
ich habe in meinem Select Statement einen verschachtelten Aufruf, der über einen Alias zu identifizieren ist. In der Where-Klausel will ich jetzt sicherstellen, dass die Rückgabe größer gleich 1 ist. Wie referenziere ich den Rückgabewert in der Where-Klausel? Alleine der Alias funktioniert leider nicht!
Es böte sich übrigens ein Join auf das Subselect an, siehe </archiv/2008/8/t175461/#m1153411>.
Freundliche Grüße
Vinzenz