【问题标题】:Search Multiple Tables at in one query (MySQL/PHP#)在一个查询中搜索多个表 (MySQL/PHP#)
【发布时间】:2011-03-10 00:38:38
【问题描述】:

我有大约 15 个表,每个表包含大约 10、000 行和大约 30 列。我希望我网站的用户能够搜索部件号或产品/描述并显示结果。不管它在哪个表中。

每个产品页面与每个对应表的名称相同。因此,如果找到产品,它只会显示一个指向正确页面的链接(文件名是表的名称)。

我们就不能这样:

query = "在 dbase.tables 中查找 $q"; ?

如果 $q 存在于表中,则返回找到它的表的名称?

感谢任何帮助!

谢谢

【问题讨论】:

    标签: php mysql database search


    【解决方案1】:

    如果所有表都具有相同的结构,您也许可以这样做。 (这听起来像是一个简单的手动分区方案。)

    加入多个可以使用的表

    SELECT * FROM tbl1
    UNION ALL
    SELECT * FROM tbl2
    ...
    

    为了获得简单的访问方法,您可以在该连接上创建一个视图:

    CREATE VIEW alltables AS
        SELECT * ... UNION ... 
    

    从未测试过这个。但是这个视图将有助于SELECT * FROM alltables WHERE find($q)... - 当然,您仍然需要对列进行有效查询。

    【讨论】:

    • @Lucifer:哎呀,太酷了。我没想到这会那么容易:]
    • 它没有大声笑。但是当我看到它时,我记得很久以前在我买的一本书中读过关于 mysql 的视图,然后我把剩下的和我已经有的另一个查询放在一起:)
    【解决方案2】:

    为什么你有这么多桌子?为什么不只有一个零件编号表,而不是另一个描述表并加入零件编号?

    【讨论】:

    • 如果我这样做,就会有数百张桌子。
    • 你知道什么是表吗?您的数据库是如何组织的?
    • 产品系统的结构过于复杂,无法按照您建议的方式排列表格。
    • 这就是规范化的数据库结构。许多表都具有基本相同的信息,需要时加入
    • 我们通过这种结构获得了更好的性能,而不是加入我们需要的一切。通过这种方式,查询保持简单,加载/响应时间更快,客户更容易维护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2017-02-18
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多