If you have a complicated query that uses many tables but that returns no rows, you should use the following procedure to find out what is wrong:
Select only those columns that are used in the
Remove one table at a time from the query until it returns
some rows. If the tables are large, it is a good idea to
LIMIT 10 with the query.
SELECT for the
column that should have matched a row against the table
that was last removed from the query.
If you are comparing
DOUBLE columns with
numbers that have decimals, you cannot use equality
=) comparisons. This problem is common
in most computer languages because not all floating-point
values can be stored with exact precision. In some cases,
FLOAT to a
DOUBLE fixes this. See
Section C.5.5.8, “Problems with Floating-Point Values”.
If you still cannot figure out what is wrong, create a
minimal test that can be run with
mysql test <
query.sql that shows your problems. You can
create a test file by dumping the tables with
mysqldump --quick db_name
query.sql. Open the file in an editor, remove
some insert lines (if there are more than needed to
demonstrate the problem), and add your
SELECT statement at the end
of the file.
Verify that the test file demonstrates the problem by executing these commands:
mysqladmin create test2shell>
mysql test2 < query.sql
Attach the test file to a bug report, which you can file using the instructions in Section 1.7, “How to Report Bugs or Problems”.