已知:實體表a中屬性有(a,b,c,d),a為主鍵;實體表b中有(d,e,f),d為主鍵,ab的多對多關係c(a,d);
需求:根據表b中的主鍵的條件查詢,查詢繫結a表中的資料,也要求返回未繫結的資料,即對於ba表中有聯絡的資料用狀態1表示,a與b未聯絡的資料用狀態2表示;
場景描述:對於經常存在的例如使用者和許可權的多對多關係,每次修改可以通過這一條sql返回所有的資料,對於已繫結的資料返回flag不為0,未繫結的資料flag為0,可減少請求次數及資料繫結。
解決方法:先對級聯表c進行過濾查詢,然後查詢過後的c表與a表示進行級聯查詢,保證資料唯一性,對於其中乙個為null的字段用ifnull進行判斷設定為指定值,則對於該指定值表示未繫結,其他值表示繫結
sql語句為: select a.*,ifnull(d.a,0) as flag from a left join ( select c.a from c left join a on a.a=c.a) as d on d.a=a.a
注:該種方法只適合於b表單個記錄繫結查詢
簡述資料庫設計中一對多和多對多的應用場景?
做乙個專案,必然是少不了資料庫設計的!在學習階段,基本都是單錶。然而在實際開發過程中,一對多,多對多的表處處都是!簡單整理一下,一對多,多對多表如何設計整理一下思路 資料庫實體間有三種對應關係 一對一,一對多,多對多。一對一關係示例 一對多關係示例 多對多關係示例 在實體關係模型中,我們知道有三種關...
資料庫表一對多,多對一,多對多的理解
建表的時候,首先得明確兩個實體之間的關係是屬於哪一種,多對多是屬於雙向的一對多,即 站在彼此的角度,它們都是一對多的關係 比如 班級和學生 分析 先站在班級角度,乙個班級有多個學生,再站在學生角度,乙個學生只能屬於乙個班級,那麼它們就不屬於多對多的關係,這樣關係就好建立了,在多的這邊建立乙個外來鍵,...
Oracle中 如何對一張表的資料同時修改跟插入
實測資料 sql code 使用merge來判斷是插入還修改 create table t124 id number 4 f1 varchar2 20 f2 varchar2 20 insert into t124 values 1 a aa insert into t124 values 2 b ...