我们如何在sql表的同一列中添加两个字段?

Posted

技术标签:

【中文标题】我们如何在sql表的同一列中添加两个字段?【英文标题】:how can we add two field in same column in sql table? 【发布时间】:2014-12-27 14:52:09 【问题描述】:

我想创建一个数据库,其中包含用户购买的所有产品评分和备注

假设我创建了一个包含某些列的表名“Users_rating_product”

user_id ->INT
company->Varchar
product1 -> 3 (rating of product out of 5)|(review of product)
product2-> 4(rating)|(some review)

我想知道如何在 mysql 中做到这一点。我正在使用 phpmyadmin 创建数据库

桌子看起来像

user_id  | company  |Ac                 | TV           | fridge 

1        | goderaj  |3 ,take more power |4,less power  |5,efficient

我想知道如何做到这一点,以便产品的评分和注释都显示在同一列中

【问题讨论】:

【参考方案1】:

您可以通过多种方式实现功能。 但这不是编写查询的标准格式。

you can have comma seperated column in your database like this
    user_id  | company  |Ac_mapping_id  
    1        | goderaj  |1,REview for Ac   

对于分隔两个值,您可以这样做

PARSENAME(REPLACE(String,',','.'),2) 'Name'

对于拆分两个值的详细参考,您可以参考: click To refer

更好的方法是将产品描述存储在不同的表中。 您可以轻松编写查询来检索数据

user_id  | company  |Ac_mapping_id  | TV_mapping_id | fridge_mapping_id 
1        | goderaj  |1              | 2             | 3

& 像这样将所有评分和评论存储在映射表中

Ac_mapping_id  | Rating   |Review
1              | 1        |abcd     

其他表以此类推。

要检索所有数据,只需使用左外连接

Select 
*
from
Users_rating_product mm
Left outer join  Ac_mapping_table ac on ac.ac_mapping_id = mm.ac_mapping_id
.....so on

【讨论】:

@SAC 这是数据库标准化的一种方式【参考方案2】:

为此,您需要一个单独的表格。叫它ProductRating。将唯一键 (ID) 放入表中,并将该键引用到您的 Users_rating_product 表中。

例如:

Users_rating_product:

user_id  | company  |Ac  | TV | fridge 
1        | goderaj  |1   | 2  | 3
2        | somecomp |4   | 5  | 6

产品评级

ID | Rating | Review
1  | 3      | Take more power
2  | 4      | less power
3  | 5      | efficient
4  | 5      | excellent
5  | 1      | awful
6  | 3      | average

【讨论】:

但是有很多用户,对于任何用户来说都有很多公司,那么如何关联哪个产品有哪个评论? 您的表需要user_id @SAC - 我在示例中添加了另一个用户/公司,向您展示它是如何工作的。

以上是关于我们如何在sql表的同一列中添加两个字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将约束添加到 MYSQL 中的列仅以保存已存在于同一表的另一列中的值? [复制]

oracle 如何把同一个表的同一个字段按条件分成不同的字段查询出来结果集?例如:

SQL如何使用同一列中的值匹配2个表

sqlserver字段如何自动更新

SQL如何批量更新某列中一个字符为另一个字符

如何在phpmyadmin中关联同一张表的两个字段?