หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
รวมตารางที่เกี่ยวข้องกับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับคอลัมน์เพิ่มเติมพร้อมผลลัพธ์ นอกจากนี้ยังใช้กับองค์ประกอบตัวกรองเพื่อใช้เงื่อนไขกับค่าคอลัมน์ในตารางที่เกี่ยวข้อง
เรียนรู้วิธีการรวมตารางโดยใช้ FetchXml
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้ link-entity กับความสัมพันธ์ชนิดต่าง ๆ
ความสัมพันธ์แบบกลุ่มต่อหนึ่ง
คิวรีนี้จะส่งกลับข้อมูลจากตาราง บัญชี และ ตารางผู้ติดต่อ ที่ยึดตาม คอลัมน์การค้นหา PrimaryContactId ในเรกคอร์ดบัญชี:
<fetch>
<entity name='account'>
<attribute name='name' />
<link-entity name='contact'
from='contactid'
to='primarycontactid'
link-type='inner'
alias='contact'>
<attribute name='fullname' />
</link-entity>
</entity>
</fetch>
ความสัมพันธ์แบบหนึ่งต่อกลุ่ม
คิวรีนี้จะส่งกลับข้อมูลจากตารางผู้ติดต่อและบัญชีที่ยึดตามผู้ติดต่อ account_primary_contact ความสัมพันธ์แบบหนึ่งต่อกลุ่ม
<fetch>
<entity name='contact'>
<attribute name='fullname' />
<link-entity name='account'
from='primarycontactid'
to='contactid'
alias='account'>
<attribute name='name' />
</link-entity>
</entity>
</fetch>
ความสัมพันธ์แบบกลุ่มต่อกลุ่ม
คิวรีนี้จะส่งกลับข้อมูลจากตาราง SystemUser และ Team โดยใช้ teammembership_association ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม
<fetch>
<entity name='systemuser'>
<attribute name='fullname' />
<link-entity name='teammembership'
from='systemuserid'
to='systemuserid' >
<link-entity name='team'
from='teamid'
to='teamid'
link-type='inner'
alias='team'>
<attribute name='name' />
</link-entity>
</link-entity>
</entity>
</fetch>
แอ ตทริ บิวต์
| ชื่อ | จำเป็นหรือไม่ | คำอธิบาย |
|---|---|---|
name |
ใช่ | ชื่อทางตรรกะของตารางที่เกี่ยวข้อง |
to |
ไม่ใช่ | ชื่อตรรกะของคอลัมน์ในองค์ประกอบหลัก เพื่อให้ ตรงกับคอลัมน์ตารางที่เกี่ยวข้องที่ระบุใน from แอตทริบิวต์
ไม่จําเป็นต้องใช้ในทางเทคนิค แต่แอตทริบิวต์นี้มักใช้ |
from |
ไม่ใช่ | ชื่อตรรกะของคอลัมน์ จาก ตารางที่เกี่ยวข้องซึ่งตรงกับคอลัมน์ที่ระบุใน to แอตทริบิวต์
ไม่จําเป็นต้องใช้ในทางเทคนิค แต่แอตทริบิวต์นี้มักใช้ |
alias |
ไม่ใช่ | แสดงชื่อของตารางที่เกี่ยวข้อง ถ้าคุณไม่ได้ตั้งค่านามแฝงจะมีการสร้างชื่อให้คุณ เพื่อให้แน่ใจว่าคอลัมน์ทั้งหมดมีชื่อที่ไม่ซ้ํากัน แต่คุณจะไม่สามารถใช้นามแฝงนั้นเพื่ออ้างอิงเอนทิตีลิงก์ในส่วนอื่น ๆ ของ XML ที่ดึงมา นามแฝงที่สร้างขึ้นโดยอัตโนมัติใช้รูปแบบ {LogicalName}+{N}โดยเป็น N หมายเลขลําดับของ link-entity ใน fetch XML โดยเริ่มต้นจาก 1 |
link-type |
ไม่ใช่ | ชนิดของการใช้ลิงก์ ลักษณะการทํางานเริ่มต้นอยู่ภายใน เรียนรู้เกี่ยวกับตัวเลือกชนิดลิงก์ |
intersect |
ไม่ใช่ | ระบุว่า link-entity ถูกใช้เพื่อรวมตารางและไม่ส่งกลับคอลัมน์ใด ๆ โดยทั่วไปสําหรับความสัมพันธ์แบบกลุ่มต่อกลุ่ม การมีอยู่ของแอตทริบิวต์นี้จะไม่เปลี่ยนแปลงการดําเนินการคิวรี คุณอาจเพิ่มแอตทริบิวต์นี้ลงในของคุณ link-entity เมื่อคุณเข้าร่วมตาราง แต่ไม่มี องค์ประกอบของแอตทริบิวต์ ใดๆ เพื่อแสดงว่านี่คือความตั้งใจ |
การใช้fromแอตทริบิวต์ และto
วิธีที่ดีที่สุดคือการตั้งค่าสําหรับทั้งfromแอตทริบิวต์ และto แอตทริบิวต์ทั้งสองนี้มักใช้เพื่อกําหนดคอลัมน์ให้ตรงกันอย่างชัดเจน อย่างไรก็ตาม from ไม่จําเป็นต้องมีแอตทริบิวต์ และ to ในทางเทคนิค
Note
สิ่งสําคัญคือคอลัมน์ที่ระบุใน
fromแอตทริบิวต์ และtoเป็นชนิดเดียวกัน การใช้คอลัมน์ชนิดอื่นไม่ได้รับการสนับสนุน เมื่อคอลัมน์ไม่ใช่ประเภทเดียวกัน โครงสร้างพื้นฐาน Dataverse อาจสามารถบังคับใช้การแปลงได้ แต่แนวทางปฏิบัตินี้อาจส่งผลให้ประสิทธิภาพลดลงอย่างมีนัยสําคัญความหมายของ
fromแอตทริบิวต์ และtoในคุณสมบัติ FetchXml คือค่าตรงข้ามของคุณสมบัติ LinkEntity.LinkFromAttributeName และ LinkEntity.LinkToAttributeName ที่สอดคล้องกันใช้เมื่อเขียนคิวรีโดยใช้ QueryExpression
หากคุณไม่ได้ใช้แอตทริบิวต์เหล่านี้อย่างใดอย่างหนึ่ง และความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มของระบบอยู่ระหว่างสองตาราง Dataverse จะเลือกค่าคีย์ที่เหมาะสมโดยใช้ความสัมพันธ์นั้น
ถ้าคุณระบุหนึ่งใน from แอตทริบิวต์ หรือ to เท่านั้น Dataverse จะพยายามค้นหาความสัมพันธ์ที่ถูกต้องโดยใช้ข้อกําหนดของโครงสร้างความสัมพันธ์ระหว่างสองตาราง
มิฉะนั้น คุณจะได้รับข้อผิดพลาดต่อไปนี้:
รหัส:
0x80041102
ข้อความ:No system many-to-many relationship exists between <table A> and <table B>. If attempting to link through a custom many-to-many relationship ensure that you provide the from and to attributes.
ตัวอย่างเช่น ทั้งสองคิวรีใช้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม teammembership_association ระหว่างตาราง Systemuser และตารางทีม ในกรณีนี้ Dataverse สามารถทํางานตาม from แอตทริบิวต์ และ to และ link-entity ที่ระบุตารางการแยกไม่จําเป็น
ระบุแอตทริบิวต์ทั้งหมด
<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity
name="teammembership"
from="systemuserid"
to="systemuserid"
intersect="true"
>
<link-entity
name="team"
from="teamid"
to="teamid"
link-type="inner"
alias="team"
>
<attribute name="name" />
</link-entity>
</link-entity>
</entity>
</fetch>
ให้ Dataverse เลือก
<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity name="team" alias="team">
<attribute name="name" />
</link-entity>
</entity>
</fetch>
ตัวเลือก link-type
ใช้ link-type เพื่อนําตัวกรองไปใช้กับระเบียนที่ส่งกลับ ตารางต่อไปนี้อธิบายค่าที่ถูกต้อง link-type :
| ชื่อ | คำอธิบาย |
|---|---|
inner |
ค่าเริ่มต้น จํากัดผลลัพธ์ให้เป็นแถวด้วยค่าที่ตรงกันในทั้งสองตาราง |
outer |
รวมผลลัพธ์จากองค์ประกอบหลักที่ไม่มีค่าที่ตรงกัน |
any |
ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง
เรียนรู้วิธีใช้ any เพื่อกรองค่าในตารางที่เกี่ยวข้อง |
not any |
ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักโดยไม่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง
เรียนรู้วิธีใช้ not any เพื่อกรองค่าในตารางที่เกี่ยวข้อง |
all |
ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีค่าคอลัมน์ที่ตรงกัน from อยู่ในเอนทิตีลิงก์ แต่ ไม่มีแถวที่ตรงกันเหล่านั้น ที่ตรงกับตัวกรองเพิ่มเติมที่กําหนดไว้สําหรับเอนทิตีลิงก์นี้ คุณจําเป็นต้อง สลับ ตัวกรองเพิ่มเติมเพื่อค้นหาแถวหลักที่ ทุก แถวของเอนทิตีลิงก์ที่ตรงกันตรงกับเกณฑ์เพิ่มเติมบางอย่าง
เรียนรู้วิธีใช้ all เพื่อกรองค่าในตารางที่เกี่ยวข้อง |
not all |
ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง ชนิดลิงก์นี้จะเทียบเท่ากับ any ชื่อ
เรียนรู้วิธีใช้ not all เพื่อกรองค่าในตารางที่เกี่ยวข้อง |
exists |
ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้เงื่อนไข EXISTS ใน where คําสั่งย่อย ใช้ข้อมูลนี้เมื่อไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์
เรียนรู้เพิ่มเติมเกี่ยวกับมีอยู่และใน |
in |
ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้เงื่อนไข IN ใน where คําสั่ง ใช้ข้อมูลนี้เมื่อไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์
เรียนรู้เพิ่มเติมเกี่ยวกับมีอยู่และใน |
matchfirstrowusingcrossapply |
ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้ชนิดนี้เมื่อเพียงตัวอย่างเดียวของแถวที่ตรงกันจากเอนทิตีที่มีการเชื่อมโยงนั้นเพียงพอ และไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์
เรียนรู้เพิ่มเติมเกี่ยวกับ matchfirstrowusingcrossapply |
องค์ประกอบแม่
| ชื่อ | คำอธิบาย |
|---|---|
| เอกลักษณ์ | ระบุองค์ประกอบรองสําหรับ องค์ประกอบการดึงข้อมูล 'เอนทิตีหลัก' สําหรับคิวรี อนุญาตเพียงหนึ่งเอนทิตีเท่านั้น |
| link-entity | รวมตารางที่เกี่ยวข้องกับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับคอลัมน์เพิ่มเติมด้วยผลลัพธ์ |
องค์ประกอบย่อย
| ชื่อ | เหตุการณ์ | คำอธิบาย |
|---|---|---|
| แอตทริบิวต์ทั้งหมด | 0 หรือ 1 | ระบุว่าค่าคอลัมน์ที่ไม่ใช่ null ทั้งหมดสําหรับแต่ละแถวจะถูกส่งกลับ ซึ่งเหมือนกับไม่เพิ่ม องค์ประกอบแอตทริบิวต์ใด ๆ เราไม่แนะนําให้ใช้องค์ประกอบนี้สําหรับกรณีส่วนใหญ่ |
| คุณสมบัติ | 0 หรือหลาย | ระบุคอลัมน์จาก เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับพร้อมกับคิวรี |
| สั่ง | 0 หรือหลาย | ระบุลําดับการจัดเรียงสําหรับแถวของผลลัพธ์ |
| link-entity | 0 หรือหลาย | รวมตารางที่เกี่ยวข้องกับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับคอลัมน์เพิ่มเติมด้วยผลลัพธ์ |
| กรอง | 0 หรือ 1 | ระบุเงื่อนไขที่ซับซ้อนสําหรับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อนําไปใช้กับคิวรี |