2011-08-09 48 views
0

我在MySQL数据库中3个表:子查询MySQL的帮助

  1. 用户;
  2. 公司有一个称为数据的日期字段;
  3. 具有idUser和idCompany的对象。

我必须找回已经得到了在公司的日期字段中的特定日期的公司,并且符合以下规则: 应该有宾语表格中没有记录有IDP = XX和IDI =(一个id的具体价值日期为yy-mm-dd的公司)

如何编写此查询?

回答

1
SELECT * FROM Company WHERE data = '2011-08-09' AND 
Company.id NOT IN 
(SELECT Object.idI FROM Object WHERE Object.idI = Company.id AND Object.idP = 'XX') 

但我不得不说,你的列和表的命名需要重新做。这可能会更有意义。

您必须为Object.idI和Object.idP创建索引以使其运行更快。

1
SELECT * FROM Company 
    LEFT JOIN Object ON(Object.idP = xx OR Object.idl = Company.id) 
    WHERE Company.date = somedate AND Object.idP IS NULL