# การเป็นสมาชิก บุคคล **`Person`** หรือ องค์กร **`Organization`** สามารถเป็นสมาชิก (**`Member`** union) ขององค์กรใดๆ ได้ ## บุคคลที่มีตำแหน่งในองค์กร ความสัมพันธ์ระหว่างบุคคลและองค์กรจะถูกอธิบายด้วย Node ตามลำดับดังนี้ - **`Person`** คือบุคคล - **`Membership`** คือข้อมูลการเป็นสมาชิก เช่นรูปแบบ หรือช่วงเวลา - **`Post`** คือตำแหน่งในองค์กรนั้นๆ - **`Organization`** คือองค์กร ยกตัวอย่างเช่น ถ้าเราอยากทราบว่า _ชวน หลีกภัย_ เคยอยู่ในตำแหน่งใดขององค์กรใดบ้าง ```graphql query People($where: PersonWhere) { people(where: $where) { id name memberships { id label start_date end_date posts { id label role organizations { id name classification } } } } } ``` Variables: ```json { "where": { "firstname": { "eq": "ชวน" }, "lastname": { "eq": "หลีกภัย" } } } ``` [Run this query in the playground](https://politigraph.wevis.info/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAAoIQAOANggBQAkA7gBb4Lqn4DOESA6qzwIAlEWAAdJESIVy1OizYcmgkWMnTpASzAbNSAIaI90xHABG3Zlopd1Uzdt0PHVA5aonNXFAbwoAfTADFAQvaWQwIJCwl00KCB87CTjHHXDNNw8M6TwIGhyiCDwAcwMkLQAvEK1eZMKnBqJDY1THIig3Li4tADMtKBreQoBfDLG4iekJkZAAGhAANz8tdxouDBAU6XEQRSFdjm3NXf68HxawjHt2ol2ELEO7kEAoOEByOEBMOF2vEbmvXa6KEuT2Ojnuj2uu0A1HCAUjhAKxwgEA4QAEcIBGOEARHDfSZ6GYgEZAA) เนื่องจากฐานข้อมูลแบบ Graph ที่แต่ละ Node เชื่อมถึงกันทั้งหมด เราจะเริ่มต้น Query ที่ Node ใดก็ได้ เช่น ถ้าเราอยากทราบว่าเคยมีใครได้รับตำแหน่ง _หัวหน้าพรรคการเมือง_ ของ _พรรคเพื่อไทย_ บ้าง เราก็สามารถเริ่มต้น Query จาก **`Post`** ได้ ```graphql query Posts($where: PostWhere) { posts(where: $where) { id label role organizations { id name } memberships { id start_date end_date members { ... on Person { id name } } } } } ``` Variables: ```json { "where": { "role": { "eq": "หัวหน้าพรรคการเมือง" }, "organizations": { "some": { "id": { "eq": "พรรคเพื่อไทย" } } } } } ``` [Run this query in the playground](https://politigraph.wevis.info/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAAoQDOK5AFACQDuAFvguqRSgOrN4ICURYAB0kRIgAcONJizYMe-QSLFiAlmGUqANgEMARgi2axeCFoTGiEPAHMdSVQC8dKVRCTklolWo3efSDqIlgC+lohwBnjkjKrinsL+KuqWYpQ6eCgA+mAuFkliyGA5ealEEVEJZWIAdHVWoiT45O5ePu1EKQXtgcHdYmHdgz7DRIMhIAA0IABuGar65uQYIIliQiAyvBtsayobpuY7be0bCFjHG4DUcICMcIDkcFeAmHCAknCATHCAeHCAxHCfgCBwgIBwr0+gAE4QCEcIB2OEAtHCAcDgNqFJpYNtY7A5nK53ORjnsfBsWsEMCcOhsUvisR0iGcLviNl9fkD3mDABJwEMAInCAdDhAERwsP6YzKowGmnGIBCQA) ## พรรคฝ่ายรัฐบาลและฝ่ายค้าน เรามองว่ามี "พรรคฝ่ายรัฐบาล" และ "พรรคฝ่ายค้าน" ก็คือตำแหน่ง **`Post`** ใน ครม. ที่มีพรรคการเมืองเป็นสมาชิก เนื่องฝ่ายของพรรคจะยึดโยงกับสมัยของ ครม. เสมอ ```graphql query Organizations($where: OrganizationWhere, $postsWhere2: PostWhere) { organizations(where: $where) { id name posts(where: $postsWhere2) { id label role memberships { id start_date end_date members { ... on Organization { id name } } } } } } ``` Variables: ```json { "where": { "id": { "eq": "คณะรัฐมนตรี-63" } }, "postsWhere2": { "role": { "startsWith": "พรรคฝ่าย" } } } ``` [Run this query in the playground](https://politigraph.wevis.info/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAPJ4DmAhkgJYBelKNESAzgBQAkA7gBb4J0pCtXqNmSAOr88CADRFOABwisUraQIBMQgAqqUm2QEoiwADpIiRCCNoMmLDnwFCeMhKYtXrRGmEtfIiRKREDfFTVnDzdI9SMELS9woP8U3wAbSgAjBAz06zwIDIQCokQ4XLxWXholVjMy6zSfIOs1SjwUAH0wRlLWtuQwXv6m8oRK-AbvNraAOkWbKzIqe3EWRsG55oDtnZCw-aCAX3Gz-YvT8IuTkDkQADdOmhyS1gwQWaJzEBdZX5Cb7WX5pDBbOa-BBYQE-ECAEDhAMhwgAY4QDEcIBGOEACHCAQjhAJhwgFQ4VGAVjgALQANgAzL90lciCc5OFfnENB4tLDgXCiiV2WVfh0uhoaCheLDfoA8OFRqPhgFw4QAScIAmOEARHDUwa024gE5AA)