加入两个有条件的表

时间:2013-04-08 07:30:15

标签: mysql left-join union

我必须使用表格,我想用SQL-Query加入它们。它可能是世界上最简单的事情,但......好吧。

表“计数”:

-----------------------------
¦ id   ¦ segment    ¦ count ¦
"""""""""""""""""""""""""""""
¦ 1    ¦ fruits     ¦ 0     ¦
-----------------------------
¦ 2    ¦ sweets     ¦ 2     ¦
-----------------------------

表“食物”:

-------------------------------------
¦ id   ¦ type            ¦ segment  ¦ 
"""""""""""""""""""""""""""""""""""""
¦ 1    ¦ banana          ¦ fruits   ¦
-------------------------------------
¦ 2    ¦ cranberries     ¦ fruits   ¦
-------------------------------------
¦ 3    ¦ strawberries    ¦ fruits   ¦
-------------------------------------
¦ 4    ¦ chocolate       ¦ sweets   ¦
-------------------------------------
¦ 5    ¦ candy           ¦ sweets   ¦
-------------------------------------

我想用水果和糖果装满“食物箱”。只有甜食仍然可以加入“食物盒”,因为它已经有足够的水果。

我怎样才能列出甜食(巧克力和糖果),因为水果不能再添加(水果= 0)?

到目前为止我的查询:

SELECT type.food
FROM count, food 
WHERE type.food LIKE '%$query%' AND segment.food > '1'

(项目应在用户在搜索字段中输入所需项目后列出。因此我使用了LIKE。)

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:-1)

当你想加入时,应该有一个条件。 。并且您使用的别名不正确它应该是food.type而不是type.food

因为你想匹配多个值,LIKE不会解雇你..可能find_in_set就是你想要的......

试试这个

SELECT f.type
FROM count c
join food f 
on c.segment = f.segment 
where  FIND_IN_SET(f.segment, 'sweets,fruit') and c.count >=1

请参阅fiddle

希望它可以帮助你..

答案 1 :(得分:-1)

SELECT food.type FROM count, food WHERE food.segment = count.segment AND food.type LIKE '%$query%' AND count.count > 0