2016-12-03 9 views
0

私は、サブクエリを使用して請求書テーブルに対してクエリを実行するために、Doctrine with Zend Framework 2を使用しています。MySQLが正常に動作しない場合

ここで私が午前問題は、私はphpMyAdminの中でこのクエリを実行すると、それはすべての請求書、名前が含まれていないことも、それらを返すことである

SELECT * 

FROM invoices i1 

WHERE (EXISTS (SELECT * FROM invoices i2 WHERE i2.invoice_first_name IN ('stephen') OR i2.invoice_middle_name IN ('stephen') OR i2.invoice_surname IN('stephen'))) 

ORDER BY i1.invoice_id DESC 

で満たされたパラメータを用いて簡略化し、生成されたSQLは、「シュテファン'

しかし、サブクエリを別々に実行すると、正しい2行が返されます。

SELECT * FROM invoices i2 WHERE i2.invoice_first_name IN ('stephen') OR i2.invoice_middle_name IN ('stephen') OR i2.invoice_surname IN('stephen') 

なぜEXISTSとサブクエリの作品にはない、私は何をしないのですか?

事前に感謝します。

答えて

0

MySQL documentationあたりとして:

サブクエリはまったくの行を返した場合、サブクエリはTRUEで、とNOTあなたのサブクエリは、いくつかの行(複数可)を返しますので、サブクエリは

FALSEであるEXISTS EXISTS、 where句はtrueです。の場合はすべての請求書テーブルにあります。

関連する問題