MySQL UNION没有返回任何结果

时间:2013-08-28 09:53:12

标签: php mysql select union

由于无法理解看似简单的问题,我一直在撕扯我的头发。我正在制作一个小型商务联系人系统,使我们公司能够存储其他商业/公司以及商业联系人的联系方式(可以是自由职业者或与之前增加的公司相关联。我要做的是拥有一个搜索表单,使我能够搜索联系人的姓名或阿拉伯语和英语的企业名称。我做错了什么?

更新:如果我从每个查询部分删除阿拉伯语搜索部分,UNION查询都有效(即我删除了“OR contact_name_arabic LIKE'%”。$ queryString。“%'”以及“OR company_name_arabic LIKE” %”。$的queryString。 “%'”)

这变得更加复杂:/

表1:公司

id   |   company_name   |   company_name_arabic
-----------------------------------------------
1    |   Red Arrow      |   السهم الأحمر
2    |   White Tower    |   البرج الأبيض
3    |   Mobilex        |   موبيليكس

表2:联系人

id   |   company_id   |   contact_name   |   contact_name_arabic
----------------------------------------------------------------
1    |       1        |   Saeed Adam     |   سعيد آدم
2    |       1        |   Andrew White   |   أندرو وايت
3    |       2        |   Steve Rogers   |   ستيف روجرز

以下是MySQL声明:

$querystring =  "(SELECT contact_name, contact_name_arabic
                            FROM CONTACTS
                            WHERE contact_name LIKE '%".$queryString."%' 
                            OR contact_name_arabic LIKE '%".$queryString."%')
                            UNION
                            (SELECT company_name, company_name_arabic
                            FROM COMPANIES
                            WHERE company_name LIKE '%".$queryString."%' 
                            OR company_name_arabic LIKE '%".$queryString."%')";

谢谢!

2 个答案:

答案 0 :(得分:0)

$querystring =  "SELECT contact_name, contact_name_arabic
                        FROM CONTACTS
                        WHERE (contact_name LIKE '%".$queryString."%' 
                        OR contact_name_arabic LIKE '%".$queryString."%')
                        UNION
                        SELECT company_name, company_name_arabic
                        FROM COMPANIES
                        WHERE (company_name LIKE '%".$queryString."%' 
                        OR company_name_arabic LIKE '%".$queryString."%')";

删除括号,Mysql将尝试运行(SELECT blah,这是无效的。

编辑:我添加了一些括号,尝试一下。

答案 1 :(得分:0)

在mysql查询构建器中尝试此查询

(SELECT contact_name, contact_name_arabic
                            FROM CONTACTS
                            WHERE contact_name LIKE '%e%' 
                            OR contact_name_arabic LIKE '%e%')
                            UNION
                            (SELECT company_name, company_name_arabic
                            FROM COMPANIES
                            WHERE company_name LIKE '%e%' 
                            OR company_name_arabic LIKE '%e%')

如果它的工作检查值是变量$ queryString。

也不需要检查字段company_name_arabic

(SELECT contact_name, contact_name_arabic
                                FROM CONTACTS
                                WHERE contact_name LIKE '%e%')
                                UNION
                                (SELECT company_name, company_name_arabic
                                FROM COMPANIES
                                WHERE company_name LIKE '%e%' )