標籤:rtt nop 設計 elf dql apm foj mbg odk
l怎麼寫Sql語句的思路:
主查詢表:SYSUSER
關聯查詢表:userjd(監督單位表),useryy(醫院表)
SQL查詢分為:
1.內串連
如果兩張表有外鍵關係就可以使用內串連,因為通過內串連每一條只能返回單條記錄。話句話說如果主查詢表的欄位通過關聯查詢表能查到(且只能查詢一條,就是在關聯表中只能查出一條),可以使用內連結。
舉例1:
表:DICTINFO:
如下:
這邊表中ID是主鍵。在這裡TYPECODE是外鍵。
表:DICTTYPE.
如下:
其中TYPECODE是主鍵。
這樣一來兩張表就有了主外鍵的關係(表DICTTYPE的主鍵TYPECODE在表DICTINFO中是外鍵)。
好了我們就可以使用內串連了。
為什麼上面說通過內串連每一條只能返回單條記錄呢?
因為:你想啊,typecode是外鍵,什麼是外鍵?在表dicttype中typecode是主鍵,主鍵是唯一的,那麼就是typecode都是唯一的,那麼dictinfo.typecode去匹配dicttype裡面的
typecode時只有一條記錄,這就是說只能返回單條的記錄,也就是說如果在dicttype中的codetype不是唯一的,那麼就會查出來多條的記錄,那麼就不是內串連了。
舉例2:
再舉一個例子:做一個資料查詢使用內串連的方式。
假設有兩張表sysuser表還有dictinfo表,我們查sysuser表查出了Userid和GroupID如下:
但是我想知道這裡的GROUPID到底代表是什麼,我們根據表的設計可以從dictinfo表中查到1,2,3,4到底代表什麼,比如
好了知道了要求後我們就來使用內串連來實現。
其實
這個東西就是一個結果集我們把它當成一張表(這裡的DICTCODE具有唯一性,可以當成是主外鍵關係)
所以根據內串連思路我們這麼寫sql語句:
select userid,groupid,info from sysuser,(select id,info,dictcode from dictinfo where typecode=‘s01‘) grouptable wheregrouptable.dictcode=sysuser.groupid
(select id,info,dictcode from dictinfo where typecode=‘s01‘) grouptable 就相當於把查出來的結果集當成了一張grouptable的表。
2.外連結
3.子查詢
SQL查詢(醫學項目的複習)