使用LIKE MySQL从两个表中提取信息

时间:2012-10-03 08:43:20

标签: mysql sql-like

我在PHP和MySQL工作

我想要冲墙。我不知道该怎么做,这让我很生气。我之前做过很多类似的事情,但这不起作用。啊。请帮忙!!!!

我正在搜索。客户将键入类似“88刹车片”的内容。我想要返回所有说“制动”所有部件的所有部件,这些部件说“垫”和所有具有88年的部件。我的问题是,年份和部件在不同的表中。

示例:

年表

  ID  |  part_id  |  year  |
============================
   1  |    15     |  1945  |
   2  |    15     |  1946  |
   3  |    16     |  1984  |
   4  |    18     |  1987  |

零件表

  ID  |  part_name  |
=====================
  15  |    brakes   |
  16  |     hose    |
  17  |    crank    |
  18  |    muffler  |

这个SQL Works,在拉出零件表时

SELECT DISTINCT * FROM hj_parts WHERE part_name LIKE "%brakes"

我会得到输出

  ID  |  part_name  |
=====================
   15  |    brakes   |

所以我需要的是如果有人进入“刹车87”我想要找回第15部分(刹车)和第18部分(因为它是1987年)的所有信息。

我完全迷失了。

我已经完成了这样的事情,从某一年开始提取所有部件,而且我认为我可以调整它,而且它没有帮助。

$query = "SELECT hj_parts.* FROM hj_parts JOIN(SELECT DISTINCT part_id FROM hj_years WHERE (year BETWEEN $starter AND $ender) OR (year='all')) hj_years ON hj_parts.id = hj_years.part_id";

1 个答案:

答案 0 :(得分:1)

我是这样做的。首先创建一个将所有内容组合在一起的查询,为方便起见,我们会将其放在视图中

create view AllParts as 
SELECT Parts.*,Years.* from Parts inner join Years on Years.part_id=Parts.ID

然后你做这样的搜索

Select * from AllParts where part_name like '%brake' or year=1987

如果你的数据库很大,这可能需要一段时间。它不一定是一个完美的解决方案,但它可以为你工作。

如果您对进行关键字搜索感兴趣,或许nosql数据库会更好