【问题标题】:Mysql query with multiple tables?带有多个表的Mysql查询?
【发布时间】:2014-09-15 08:50:07
【问题描述】:

希望你能帮上忙。我想对包括多个表格的产品进行关键字搜索。但并非每个产品的每个表中都有任何条目...

例子

table 'product'
id     product_name     description
1      my product       this is my favorite product
2      another item     that is another product
3      blue car         for driving away

table 'keywords'
prod_id    keywords
2          car, product, blue

所以,现在我想获取所有产品,在其“产品名称”、“描述”或“关键字”中包含“汽车”

只使用一个简单的 mysql 查询只会得到那些产品作为结果,它们在两个表中:

SELECT A.id FROM product A, keywords B WHERE A.ID = B.product_id AND....

我尝试了 LEFT JOIN - 但结果是所有三种产品(也许我做错了):

SELECT A.id FROM product A LEFT JOIN keywords B ON A.id = B.prod_id AND (A.product_name LIKE '%car%' OR A.description LIKE '%car%' OR B.keywords LIKE '%car%')

有人可以帮忙吗? 感谢和问候 一月

【问题讨论】:

    标签: mysql left-join multiple-tables


    【解决方案1】:

    最好的方法是使用联合

        select id from product where product_name LIKE '%car%' OR description LIKE '%car%'
        union 
        select prod_id as id from keywords where keywords LIKE '%car%' ;
    

    【讨论】:

      【解决方案2】:

      您将AND 放在LEFT JOIN 指令中,而不是WHERE。试试

      SELECT `A.id` FROM product AS `A`
      LEFT OUTER JOIN keywords AS `B` ON `A.id` = `B.prod_id`
      WHERE (`A.product_name` LIKE '%car%' OR `A.description` LIKE '%car%' OR `B.keywords` LIKE '%car%')
      

      注意LIKE '%car%' 也会选择That's my favorite cardigan.

      RLIKE '[[:<:]]word[[:>:]]' 可能会更好。


      资源:

      用于 RLIKE 的 Mysql 正则表达式:http://dev.mysql.com/doc/refman/5.0/fr/regexp.html

      【讨论】:

        【解决方案3】:

        这可以使用联合来完成:

        (select id from product where product_name LIKE '%car%' OR description LIKE '%car%')
        union 
        (select prod_id from keywords where keywords LIKE '%car%' );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-14
          • 1970-01-01
          • 1970-01-01
          • 2013-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多