SQL查询匹配首选项

时间:2014-03-28 00:04:41

标签: mysql sql psql

我正在尝试将客户偏好与房屋/公寓相匹配。我在下面尝试了以下查询,但它似乎拒绝它,任何想法为什么?

select b.*
from propertyforrent b, client a
where a.fname = 'John'
having a.preftype = b.type and a.maxrent <= b.rent;

3 个答案:

答案 0 :(得分:1)

使用:

select b.*
  from propertyforrent b
  join client a
    on a.preftype = b.type
 where a.fname = 'John'
   and a.maxrent <= b.rent

HAVING子句用于比较聚合值。

&#34; a.preftype = b.type&#34;是一个连接条件(使用连接子句)

&#34; a.maxrent&lt; = b.rent&#34;是水平比较(不是聚合/垂直比较)

答案 1 :(得分:0)

当您还使用having(使用汇总查询)时,您应该只使用group by。也许你正在寻找更像这样的东西:

select b.*
from propertyforrent b
   join client a on a.preftype = b.type and a.maxrent <= b.rent
where a.fname = 'John'

答案 2 :(得分:0)

having之后使用

group by,请参阅MySQL - SELECT Syntax

这里有两个表propertyforrentclient之间的隐式连接。你可以说

select b.*
from propertyforrent b, client a
where a.fname = 'John' and a.preftype = b.type and a.maxrent <= b.rent;

或使用明确的join

select b.*
from propertyforrent b
join client a on a.preftype = b.type
where a.fname = 'John' and and a.maxrent <= b.rent;