031醫學項目-模組三:藥品供應商目錄模組——sql補充知識

來源:互聯網
上載者:User

標籤:代碼   type   cti   分享   單位   分析   com   查詢語句   distinct   

這個補充知識有一個點很有必要,視屏上的老師提出一點:

  內連結關聯查詢:

  如果表A和表B有一個外部索引鍵關聯 ,可以通過外鍵進行內連結查詢

   select dictinfo.*, dicttype.typename

  from dictinfo, dicttype

 where dictinfo.typecode = dicttype.typecode

 

   --不通過外鍵,通過groupid查詢使用者類型的代碼結果集,只能查詢出一條記錄,可以使用內連結

select sysuser.*, dictinfo.info

  from sysuser,

       (select dictcode, typecode, info from dictinfo where typecode = ‘s01‘) dictinfo

 where sysuser.groupid = dictinfo.dictcode

 

小結:如果主查詢表欄位從關聯表只查詢出一條記錄,這個欄位就可以作為內連結關聯欄位

 

--內連結的錯誤的例子,通過關聯查詢出重複記錄

--使用groupidselect dictcode, typecode, info from dictinfo可以找到多個記錄,不能使用內連結,可能會出現重複記錄

 

select sysuser.*

  from sysuser, (select dictcode, typecode, info from dictinfo) dictinfo

 where sysuser.groupid = dictinfo.dictcode

 

 

注意:如果使用內連結查詢出現重複記錄,首先去思考是否是sql寫錯了,不能直接去使用distinct去除重複記錄。

有一些特殊情況下還是需要使用distinct去除重複記錄,比如複雜的統計分析sql。

 

看這個項目視屏的時候我剛好也在看50個查詢系列,寫那裡的sql查詢語句我就碰到了這個問題。我也用了Distinct函數,原來是不能用的啊。

 

 

 

 

 

 

  外連結關聯查詢:

 

 

 

表A,表B中只有一部分資料和表A匹配,不能使用內連結。

 

主查詢是表A,只能使用外連結。

 

 

 

--查詢使用者所屬單位,sysid對應三張表的id

 

 

 

select sysuser.*,useryy.mc from sysuser left join useryy on sysuser.sysid = useryy.id

 

 

 

select * from useryy right join sysuser on sysuser.sysid = useryy.id

 

 

 

--以上的需要不能使用內連結

 

select sysuser.*,useryy.mc from sysuser, useryy where  sysuser.sysid = useryy.id

 

 

 

小結:

 

表A中從表B中只能關聯查詢一部分資料,只能使用外連結

 

 

 

 

 

  子查詢

 

 

 

select sysuser.*,

 

 (select * from useryy where id = sysuser.sysid)

 

 from sysuser

 

子查詢只能返回一列,否則 :

 

 

 

 

 

 

子查詢只允許返回一行,否則 :

 

 

 

 

 

 

正確的sql:

 

--子查詢

 

--根據sysid取出單位名稱

 

--根據groupid查詢使用者類型代碼對應的名稱

 

select sysuser.*,

 

 (select mc from useryy where id = sysuser.sysid)sysmc,

 

 (select info from dictinfo where dictcode = sysuser.groupid and typecode = ‘s01‘)groupname

 

 from sysuser

 

 

 

 

 

 

 

   巢狀表格

 

 

 

可以將一個sql查詢結果組成一個虛表,查詢方式和查詢一個實體表相同的。

 

組成的虛擬表欄位是不允許重複的,否則 :

 

 

 

031醫學項目-模組三:藥品供應商目錄模組——sql補充知識

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.