4

我使用 mysql 连接三个表并在 HTML 表中打印数据。我的查询如下所示:

SELECT nid, title, cid, lid, street, city, state, cat_name, cat_icon 
FROM 
    node 
    JOIN location USING(nid) 
    LEFT JOIN categories USING(cid) 
ORDER BY nid DESC LIMIT 10

然后我将数据打印到一个漂亮的 HTML 表格中。

这很适合显示我的数据,但我很好奇如何编辑结果。基本上,企业在“节点”表中有数据,在“位置”中有地址信息。

我打算制作一个模态或内联编辑表单,但我很好奇您如何更新数据,因为它来自多个表?

4

2 回答 2

4
UPDATE node JOIN location USING(nid) LEFT JOIN categories USING(cid) 
SET    node.col1 = newvalue

如 mysql 手册中所述,多表 UPDATE 语句可以使用 SELECT 语句中允许的任何类型的连接,例如 LEFT JOIN。

于 2012-10-15T03:17:41.900 回答
1

[table_Business] BusinessID NodeID LocationID BusinessName BusinessDescription

[table_Node] NodeID NodeName NodeDescription

[table_Location] LocationID LocationName LocationDescription

表之间的关系允许您修改/删除/添加数据。关系由标识符 (ID) 决定。在上述情况下,主表是 table_Business。一个业务有一个 Node 和一个 Location,这使得关系图中的 table_Node 和 table_Location 二级表。对于一项业务,我们可以在所有三个表中都有数据:table_business table_node,table_location 但即使数据分散,我们仍然可以修改/引用它,只要我们有一些东西可以识别它。这就是 businessID、nodeID 或 locationID 发挥作用的地方。

通过知道NodeID,我们可以修改一项业务的一个特定节点。

通过知道LocationID,我们可以修改一个企业的一个特定位置。

通过了解BusinessID,我们可以修改一个特定的业务,一个特定的数据和一个业务的一个特定位置。

(根据BusinessID,我们可以从table_Business中选择LocationID或NodeID,然后我们可以使用LocationID,NodeID分别修改table_Location,table_Node中的信息)


这是具有不同关系定义的相同数据

[table_Business] BusinessID NodeID BusinessName BusinessDescription

[table_Node] NodeID NodeName NodeDescription

[table_Location] LocationID BusinessID LocationName LocationDescription

请注意,LocationID 已从 table_Business 中删除,BusinessID 出现在 table_Location 中。通过这样做,我们可以为企业提供多个位置。如果您要存储肯德基类型的企业,那么能够定义多个位置会很有帮助。

通过知道NodeID,我们可以修改一项业务的一个特定节点。

通过知道LocationID,我们可以修改一个企业的一个特定位置。

通过了解BusinessID,我们可以修改一项特定业务、一个特定节点,但不能修改一项业务的一个特定位置

(如果我们要使用 BusinessID 来修改位置数据,我们最终会修改该企业的所有位置。在这种情况下,我们需要 LocationID)

关系被定义为一组具有相同属性的元组。元组通常表示一个对象和有关该对象的信息。对象通常是物理对象或概念。关系通常被描述为一个表,它被组织成行和列。一个属性引用的所有数据都在同一个域中,并且符合相同的约束。关系模型指定关系的元组没有特定的顺序,并且元组反过来对属性没有顺序。应用程序通过指定查询来访问数据,这些查询使用诸如 select 来识别元组、project 来识别属性以及 join 来组合关系等操作。可以使用插入、删除和更新运算符修改关系。新元组可以提供显式值或从查询派生。相似地,查询标识要更新或删除的元组。关系的每个元组都必须通过其属性值的某种组合(一个或多个)来唯一标识。这种组合称为主键。

于 2012-10-15T03:49:01.590 回答