0

我已经掌握了大多数 mysql 查询的要点以及如何设置我的表,但是我对如何做到这一点有点迷茫。

我目前有一个具有这种格式的表:

 tag_target_id | tag_id   | sub_tag_id | tag_target_name | tag_type_id
    int(11)    | int(11)  | int(11)    |   varchar(255)  | int(11
    <PK>       | <FK>     |   <FK>     |                 | <FK>

单个tag_target_id对应于一个内容,即。一个视频,文章等现在在表格中应该有多个相同tag_target_id and tag_target_name和不同的条目,tag_id , sub_tag_id , tag_type_id足够简单

所以我的问题是当我向表中插入数据时,我有一个如下所示的 PDO 查询:

 "INSERT INTO phpro_tag_targets (tag_id, sub_tag_id, tag_target_name, tag_type_id) 
  VALUES (:tag_id, :sub_tag_id,:tag_target_name,:tag_type_id)" 

...我曾经有tag_target_id自动增量,但是每个新查询显然都会增加,tag_target_id因此单个内容将具有tag-target_id = 5, 6, 7, 8, 9例如。我想让每条新内容都有一个tag_target_id
现在我想以某种方式让每条新内容都有一个新的tag_target_id但不是每条内容的表格中的每个条目都有自己独特的想法

所以例如。对于表中的一项内容,该内容的所有数据可能如下所示:

 tag_target_id | tag_id   | sub_tag_id | tag_target_name | tag_type_id
    int(11)    | int(11)  | int(11)    |   varchar(255)  | int(11
     54        |  22      |    64      | url_to_content  |   16     
     54        |  66      |    82      | url_to_content  |   24
     54        |  22      |    77      | url_to_content  |   18 
     54        |  87      |    55      | url_to_content  |   16
     54        |  66      |    92      | url_to_content  |   20

那么如何更改表的结构或编写查询集来实现所需的输出呢?

4

2 回答 2

0

那么你仍然需要一个唯一的 id 来区分记录。我将创建一个名为“tag_content_id”的新列,并使用它来存储分组 ID(在您的示例 54 中)。这样,您的表将有一个唯一的 id 用于键 (tag_target_id),也是一种区分不同内容条目和将项目组合在一起的方法 (tag_content_id)。当所有其他方法都失败时,添加一列!

于 2013-09-19T00:32:05.770 回答
0

假设您有单独的表,其中包含有关内容本身的信息您可以在字段上创建复合主键tag_target_idtag_id并且sub_tag_id

并将tag_target_id此内容表设为 FK。

对于现有表,查询将是

ALTER TABLE phpro_tag_targets ADD PRIMARY KEY uniq_target_tag_sub (tag_target_id,tag_id,sub_tag_id)
于 2013-09-19T01:37:01.167 回答