2011-11-08 3 views
2

イムMySQLでフィールドを選択せず​​に持って使用する方法:私はこのエラーを取得このクエリ使用

 
    SELECT `projects`.*, 
      (SELECT SUM(`amount`) 
      FROM `accountprojectspayment` 
      WHERE `projects_id` = `projects`.`id`) AS `payed` 
    FROM `projects` 
    INNER JOIN `bids` ON `bids`.`id` = `projects`.`bids_id` 
    HAVING `bids`.`amount` >= `payed` 

を:不明な列「bids.amount」を有する句

」にしかし、私は、コードを変更した場合これまで:

 
    SELECT `projects`.*, `bids`.`amount`, 
      (SELECT SUM(`amount`) 
      FROM `accountprojectspayment` 
      WHERE `projects_id` = `projects`.`id`) AS `payed` 
    FROM `projects` 
    INNER JOIN `bids` ON `bids`.`id` = `projects`.`bids_id` 
    HAVING `bids`.`amount` >= `payed` 

問題が解決しましたが、使用したくないです。bidsを選択してください。 amount

答えて

3

たとえば、派生テーブルを使用します。このようなもの:

SELECT `DT1`.* 
FROM (SELECT `projects`.*, 
       (SELECT SUM(`amount`) 
       FROM `accountprojectspayment` 
       WHERE `projects_id` = `projects`.`id`) AS `payed`     
     FROM `projects`) AS `DT1`    
INNER JOIN `bids` ON `bids`.`id` = `DT1`.`bids_id` 
WHERE `bids`.`amount` >= `DT1`.`payed`; 
関連する問題