Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

I am making a multi-table fulltext query.But I met some question. I need make a query like

(SELECT 
title,content,date,cat 
FROM article1 
WHERE 
cat='Science fiction' 
AND 
MATCH (title,content) 
AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
UNION 
(SELECT 
title,content,date 
FROM article3 
WHERE MATCH (title,content)
 AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
Order By date DESC LIMIT 10

But it caused Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

If I deleted cat='Science fiction' AND it can pass the test.

Where is the problem? If I want make a query what I want: first fulltext query require need meet cat='Science fiction'. Thanks a lot.

share|improve this question
up vote 2 down vote accepted

You are trying to UNION together result sets that return a different number of columns. Your first query returns 4 columns (title,content,date,cat) while your second only returns 3 (title,content,date). Each query must return the same number of columns.

share|improve this answer

I don't know why removing the cat LIKE 'Science fiction' makes the query work. As written, it should not work in either case. UNION requires both parts of the queries to produce the same number of columns with compatible types. Your UNION has 4 columns in the first part and 3 columns in the second:

SELECT  title, content, date, cat FROM article1  
UNION
SELECT  title, content, date      FROM article3
share|improve this answer

Did mysql_query return FALSE, indicating a problem parsing your query? If you blindly passed "FALSE" into mysql_fetch_array(), I'd expect to see that kind of error.

share|improve this answer

try

cat LIKE 'Science fiction' 
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                       <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\n                </div>\n            </div>\n\n            <div id=\"copyright\">\n                site design / logo &#169; 2016 Stack Exchange Inc; user contributions licensed under <a href=\"https://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a> \n                with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\n            </div>\n            <div id=\"svnrev\">\n                rev 2016.2.10.3243\n            </div>\n            \n        </div>\n    </div>\n    <noscript>\n        <div id=\"noscript-warning\">Stack Overflow works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\n    </noscript>\n<scr"], "copyright__copyright__copyright": ["t, date      FROM article3\nshare|improve this answer\n\nDid mysql_query return FALSE, indicating a problem parsing your query? If you blindly passed \"FALSE\" into mysql_fetch_array(), I'd expect to see that kind of error.\n\nshare|improve this answer\n\ntry\n\ncat LIKE 'Science fiction' \nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}