簡體   English   中英

如何在MySQL中更新或插入具有多對多關系的行

[英]How to update or insert row with many-to-many relation in MySQL

我在office_service表中有3個表office,service和它們之間的關系。 這是表的示例:

Offices
+----+---------+
| id | street  |
+----+---------+

Services
+----+---------+
| id |service  |
+----+---------+

Office_Service
+----+-----------+------------+
| id | id_office | id_service |
+----+-----------+------------+

我的辦公室沒有服務,而辦公室則更改一項或多項服務。

在辦公室頁面上,我顯示有關它的信息,並顯示所有服務的<select multiple>標簽。 如果我的查詢“從office_service那里的SELECT id_service來自id_office = $ office_id”,則返回我標記為“已選擇”的適當<option>

如果辦公室改變服務,或者沒有服務的辦公室會得到服務,我不知道該怎么辦。 如何使用MySQL來實現,還是我需要在office的更新/插入操作之前檢查office_service表?

更新:當用戶單擊“保存”按鈕時,如何找出要執行的操作-對Office_Service表中的行進行插入,刪除或不執行任何操作?

如果要顯示所有服務的列表,以及在給定辦公室可以使用哪些服務。 假設(id_service,id_office)元組在office_service是唯一的,則如下所示:

SELECT s.id
     , s.service
     , os.id_service IS NOT NULL AS `service_exists_for_this_office`
  FROM services s
  LEFT 
  JOIN office_service os
    ON os.id_service = s.id
 WHERE os.id_office = '42'

如果office_service有匹配的行,則選擇列表中的第三個表達式將返回1 ,如果該行不存在,則返回0

要將服務添加到辦公室,

INSERT INTO office_service (id_office, id_service) VALUES (42, 7);

要從辦公室刪除該服務:

DELETE FROM office_service WHERE id_office = 42 and id_service = 7;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM