2013-08-28 124 views
1

我一直在撕掉我的头发,因为我无法理解似乎是一个非常简单的问题。我正在制作一个小型的业务联系人系统,使我们公司能够存储其他业务/公司的联系方式以及业务联系人(可以是自由职业者或与之前添加的公司有联系。我想要做的是搜索形式使我能够搜索联系人的名称或在阿拉伯文和英文企业名称我在做什么错误MySQL UNION没有返回任何结果

UPDATE:联合查询工作,如果我删除从每个查询部分阿拉伯搜索部分(即我删除 “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."%')"; 

谢谢!

+1

尝试使用'UNION ALL' – DevZer0

+2

你能否解释一下什么是不为你工作。 –

+0

DevZer0 - 没有帮助:/ 摩尼 - 我试图拔出任何记录匹配联系人的名称或公司的名称只使用一个查询字符串。 问题是,如果我只尝试从一个表中选择(即删除UNION和第二个查询)它工作正常! – Haret

回答

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将尝试运行(选择等等这是无效的

编辑:我添加了一些括号,试试吧

+0

Mihai - 我删除了括号,但仍然不起作用。问题是,如果我只尝试从一个表中选择(即删除UNION和第二个查询),它工作正常! – Haret

+0

我不确定,但如果可能会失败,因为在第二个选择它没有找到任何结果。试着把数据放在你的表中,这样两个选择找到的东西,所以你可以测试它。或者直接在mysql中用现有数据测试查询。 – Mihai

+0

Hey Mihai - 当我删除每个Select语句的阿拉伯语部分时,Union查询完美地工作。我现在更加困惑:/ – Haret

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%')