4

mysqlを使用して3つのテーブルを結合し、データを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ステートメントは、LEFT JOINなど、SELECTステートメントで許可されている任意のタイプの結合を使用できます。

于 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です。1つのビジネスには1つのノードと1つのロケーションがあり、関係図でtable_Nodeとtable_Locationのセカンダリテーブルを作成します。1つのビジネスでは、table_business table_node、table_locationの3つのテーブルすべてにデータを含めることができますが、データが分散している場合でも、識別できるものがあれば、データを変更/参照できます。ここで、businessID、nodeID、またはlocationIDが機能します。

NodeIDを知ることにより、1つのビジネスの1つの特定のノードを変更できます。

LocationIDを知ることにより、1つのビジネスの1つの特定の場所を変更できます。

BusinessIDを知ることにより、1つの特定のビジネス、1つの特定のデータ、および1つのビジネスの1つの特定の場所を変更できます。

(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に表示されていることに注意してください。これを行うことにより、ビジネスのために複数の場所を持つことができます。KFCタイプのビジネスを保存している場合は、複数の場所を定義できると便利です。

NodeIDを知ることにより、1つのビジネスの1つの特定のノードを変更できます。

LocationIDを知ることにより、1つのビジネスの1つの特定の場所を変更できます。

BusinessIDを知ることにより、1つの特定のビジネス、1つの特定のノードを変更できますが、1つのビジネスの特定の場所を変更することはできません

(BusinessIDを使用してロケーションデータを変更する場合、そのビジネスのすべてのロケーションを変更することになります。この場合はLocationIDを変更する必要があります)

リレーションは、同じ属性を持つタプルのセットとして定義されます。タプルは通常、オブジェクトとそのオブジェクトに関する情報を表します。オブジェクトは通常、物理的なオブジェクトまたは概念です。リレーションは通常、行と列に編成されたテーブルとして記述されます。属性によって参照されるすべてのデータは同じドメインにあり、同じ制約に準拠しています。リレーショナルモデルは、リレーションのタプルに特定の順序がなく、タプルが属性に順序を課さないことを指定します。アプリケーションは、selectを使用してタプルを識別し、projectを使用して属性を識別し、joiningを使用してリレーションを結合するクエリを指定することにより、データにアクセスします。リレーションは、挿入、削除、および更新演算子を使用して変更できます。新しいタプルは、明示的な値を提供することも、クエリから派生させることもできます。同様に、クエリは、更新または削除するタプルを識別します。リレーションの各タプルは、その属性値の組み合わせ(1つ以上)によって一意に識別できる必要があります。この組み合わせは、主キーと呼ばれます。

于 2012-10-15T03:49:01.590 に答える