2011-04-14 92 views
1

我有一个表,看起来像这样根据条件对多行

Tag_Id Bid  Category Title 
    1  1  Toys  Ludo 
    2  1  Toys  Snakes 
    3  2  Food  Potato 
    4  1  Food  Chicken 
    5  1  Name  Chris 
    6  2  Name  Joe 

我想写基于以下条件其中发现投标查询选择IDS。

Find Bid's where 
(
    (Category = "Toys" AND Title = "Ludo") 
    OR 
    (Category = "Toys" AND Title = "Snakes") 
) 
AND (Category = "Food" AND Title = "Potato") 
AND 
(
    (Category = "Name" AND Title = "Chris") 
    OR 
    (Category = "Name" AND Title = "Joe") 
) 

请注意,在不同类别之间存在相同类别和AND之间的OR。有没有办法通过单个查询来实现这一点?

+0

可以b'MySQL的case'声明帮助ü :http://dev.mysql.com/doc/refman/5.0/en/case-statement.html – diEcho 2011-04-14 06:58:06

+0

您能描述上述示例数据所需的预期输出吗? – Dheer 2011-04-14 07:25:39

+0

预期的输出是竞标1 – Ankit 2011-04-14 07:38:43

回答

1
SELECT Bid 
FROM yourTable 
WHERE ((Category = "Toys" AND Title = "Ludo") OR (Category = "Toys" AND Title = "Snakes")) 
AND (Category = "Food" AND Title = "Potato") 
AND ((Category = "Name" AND Title = "Chris") OR (Category = "Name" AND Title = "Joe")) 

你已经写出了最困难的。

+0

这不会在多行中找到出价。关系划分问题的种类 – Ankit 2011-04-14 07:16:28

+1

所以,我想,我不明白你想要什么请求返回 – Elorfin 2011-04-14 07:29:59

0

尝试

SELECT Bid FROM bidTable WHERE Category = "Toys" 
UNION 
SELECT Bid FROM bidTable WHERE Category = "Food" 
UNION 
SELECT Bid FROM bidTable WHERE Category = "Name" 

我认为ü得到问题出那么为什么这么多condition..btw u能在WHERE子句添加条件的所有行