【问题标题】:Search for column format搜索列格式
【发布时间】:2010-07-03 21:23:31
【问题描述】:

这对我来说是一个有点困难的问题,而且我可能会以完全错误的方式解决它。

我在数据库中存储了一组选项,其中每个选项都是它自己的列。但是,用户可以更改选项的数量,因此我需要一种方法让 PHP 始终选择所有选项。

假设我有这些列:options_dialog_1、options_dialog_2、options_dialog_3、options_dialog_4

这些对话框选项列的数量可能不同,例如,可以添加另一个名为 options_dialog_5 的列。

如何根据列名格式选择所有对话框选项列?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我认为您在这里遇到了数据库设计问题;像这样重复列最终总是会导致麻烦。我认为您需要两张表,一张用于用户,一张用于定义类似这样的选项...

    USERS
       id
       name
    
    OPTIONS
        id
        user_id
        option_dialogue_number
        option_dialogue_value
    

    这会将列变成行,这样更容易获得。

    【讨论】:

    【解决方案2】:

    Brian's answer 真的会在更长的时间内给你带来回报。但是,如果您需要一些快速而丑陋的东西,您可以查看“元数据字典”(存储有关所有其他表、列等信息的表)。您可以通过第一个查询从中获取列列表,并使用它来构建第二个。

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='mytable' AND COLUMN_NAME LIKE 'options_dialog%'
    

    访问manual on INFORMATION_SCHEMA 了解更多好东西。

    【讨论】:

      【解决方案3】:

      我不确定我是否理解问题所在。你在找吗

      SELECT * FROM options_table
      

      类似的东西(假 SQL - 不会工作

      SELECT ( SELECT column_names where column_name LIKE 'options_dialog%' ) 
      FROM options_table
      

      对我来说听起来不可行(尽管我确信 it's possible 不知何故)。如果您需要此功能,请考虑使用refactoring the database designmaybe use a bitmask 将所选选项存储在单个列中。

      【讨论】:

      • 它会起作用,但是表格很大而且 * 非常慢。我想我可以使用不同的表格作为选项
      猜你喜欢
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多