[英]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.