Christopher Reimann: Mysql Where Klausel - Rückgriff auf Alias in SELECT

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

    Du wunderst Dich?

    Es böte sich übrigens ein Join auf das Subselect an, siehe </archiv/2008/8/t175461/#m1153411>.

    Freundliche Grüße

    Vinzenz

    1. Du wunderst Dich?

      Ha! Sql is so funny - cool!

      Vielen Dank