我使用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表格中。
这很适合显示我的数据,但我很好奇我如何编辑结果。基本上,企业在“节点”表中包含数据,在“位置”中包含地址信息。
我打算制作一个模态或内联编辑表单,但我很好奇你是如何更新数据的,因为它来自多个表格?
答案 0 :(得分:4)
UPDATE node JOIN location USING(nid) LEFT JOIN categories USING(cid)
SET node.col1 = newvalue
如mysql手册中所述,多表UPDATE语句可以使用SELECT语句中允许的任何类型的连接,例如LEFT JOIN。
答案 1 :(得分:1)
[table_Business] 的 BusinessID 强> 的节点ID 强> 的 LocationID 强> BUSINESSNAME BusinessDescription
[table_Node] 节点ID 节点名 NodeDescription
[table_Location] LocationID 地点名称 LocationDescription
表之间的关系允许您修改/删除/添加数据。关系由标识符(ID)决定。 在上面的例子中,主表是table_Business。一个企业有一个节点和一个位置,它在关系图中生成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 强> 的节点ID 强> BUSINESSNAME BusinessDescription
[table_Node] 节点ID 节点名 NodeDescription
[table_Location] LocationID 的 BusinessID 强> 地点名称 LocationDescription
请注意,此处已从table_Business中删除LocationID,并且businessID出现在table_Location中。 通过这样做,我们可以为企业提供多个位置。如果您要存储肯德基类型的业务,那么能够定义多个位置将会很有帮助。
通过了解 NodeID ,我们可以修改一个企业的一个特定节点。
通过了解 LocationID ,我们可以修改一个商家的一个特定位置。
通过了解 BusinessID ,我们可以修改一个特定的业务,一个业务的一个特定节点但不是一个特定的位置。
(如果我们要使用BusinessID修改位置数据,我们最终会修改该业务的所有位置。在这种情况下我们需要LocationID)