Searching for someone not in a relationship

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
2
down vote

favorite












We're using CiviCRM to primarily build a network of activist groups around the country. There are "area organisers" and people they are linked with. We are using the relationship function to link people together.
It would be really helpful to be able to search for people who haven't yet been linked to an area organiser (because there isn't one yet in their locality), but I can only work out how to search for relationships between specific individuals. Is there a way to search for everyone who doesn't yet have a relationship with anyone else in the database?










share|improve this question

























    up vote
    2
    down vote

    favorite












    We're using CiviCRM to primarily build a network of activist groups around the country. There are "area organisers" and people they are linked with. We are using the relationship function to link people together.
    It would be really helpful to be able to search for people who haven't yet been linked to an area organiser (because there isn't one yet in their locality), but I can only work out how to search for relationships between specific individuals. Is there a way to search for everyone who doesn't yet have a relationship with anyone else in the database?










    share|improve this question























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      We're using CiviCRM to primarily build a network of activist groups around the country. There are "area organisers" and people they are linked with. We are using the relationship function to link people together.
      It would be really helpful to be able to search for people who haven't yet been linked to an area organiser (because there isn't one yet in their locality), but I can only work out how to search for relationships between specific individuals. Is there a way to search for everyone who doesn't yet have a relationship with anyone else in the database?










      share|improve this question













      We're using CiviCRM to primarily build a network of activist groups around the country. There are "area organisers" and people they are linked with. We are using the relationship function to link people together.
      It would be really helpful to be able to search for people who haven't yet been linked to an area organiser (because there isn't one yet in their locality), but I can only work out how to search for relationships between specific individuals. Is there a way to search for everyone who doesn't yet have a relationship with anyone else in the database?







      search relationships






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 4 hours ago









      Andrew Metheven

      363




      363




















          3 Answers
          3






          active

          oldest

          votes

















          up vote
          2
          down vote













          One way is to export two lists to Excel and then use the power of Excel to find the missing ones.



          1. Under Reports - Contact Reports, run the Relationship Report and under Columns check "Contact ID" so that it appears in the output.

          2. From the Actions dropdown export that to CSV.

          3. Under Reports - Contact Reports, run the Constituent Summary Report and under Columns check "Contact ID".

          4. From the Actions dropdown export that to CSV.

          5. Do something like described here to find the contact ids that are in the second list but not the first. Note you'll need to sort the lists by contact id first for this method to work.
            https://www.extendoffice.com/documents/excel/3124-excel-compare-two-columns-for-missing-values.html#formula

          There are other ways to do it in Excel if you don't like that one above. Search the internet for something like "how to tell which values are missing from two lists in excel". If you're using LibreOffice or similar I'm sure it can be done too.






          share|improve this answer



























            up vote
            1
            down vote













            While this isn't an ideal fix, it's a quick one if you know SQL:



            • Create a new group called "Contacts without relationship".

            • Note the group ID. You can find the group id by hovering the mouse over the "Contacts" link of the group on the Contacts » Manage Groups page. In the screenshot below, you can see that the group ID of "Summer Program Volunteers" is "3".

            • Run this SQL statement:

              SELECT '3', cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_a WHERE cr.id IS NULL AND cc.id IN (SELECT cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_b WHERE cr.id IS NULL) ORDER BY cc.id;


            Replace the "3" above with YOUR group ID before you run it.



            Now, everyone without a relationship will be in your group.



            Screenshot for group ID (click to zoom):
            enter image description here






            share|improve this answer




















            • Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
              – Demerit
              1 min ago

















            up vote
            0
            down vote













            Either you can create a custom report to achieve that or can be done through CiviCRM API in a module code.






            share|improve this answer




















              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "605"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              noCode: true, onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













               

              draft saved


              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcivicrm.stackexchange.com%2fquestions%2f27240%2fsearching-for-someone-not-in-a-relationship%23new-answer', 'question_page');

              );

              Post as a guest






























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              2
              down vote













              One way is to export two lists to Excel and then use the power of Excel to find the missing ones.



              1. Under Reports - Contact Reports, run the Relationship Report and under Columns check "Contact ID" so that it appears in the output.

              2. From the Actions dropdown export that to CSV.

              3. Under Reports - Contact Reports, run the Constituent Summary Report and under Columns check "Contact ID".

              4. From the Actions dropdown export that to CSV.

              5. Do something like described here to find the contact ids that are in the second list but not the first. Note you'll need to sort the lists by contact id first for this method to work.
                https://www.extendoffice.com/documents/excel/3124-excel-compare-two-columns-for-missing-values.html#formula

              There are other ways to do it in Excel if you don't like that one above. Search the internet for something like "how to tell which values are missing from two lists in excel". If you're using LibreOffice or similar I'm sure it can be done too.






              share|improve this answer
























                up vote
                2
                down vote













                One way is to export two lists to Excel and then use the power of Excel to find the missing ones.



                1. Under Reports - Contact Reports, run the Relationship Report and under Columns check "Contact ID" so that it appears in the output.

                2. From the Actions dropdown export that to CSV.

                3. Under Reports - Contact Reports, run the Constituent Summary Report and under Columns check "Contact ID".

                4. From the Actions dropdown export that to CSV.

                5. Do something like described here to find the contact ids that are in the second list but not the first. Note you'll need to sort the lists by contact id first for this method to work.
                  https://www.extendoffice.com/documents/excel/3124-excel-compare-two-columns-for-missing-values.html#formula

                There are other ways to do it in Excel if you don't like that one above. Search the internet for something like "how to tell which values are missing from two lists in excel". If you're using LibreOffice or similar I'm sure it can be done too.






                share|improve this answer






















                  up vote
                  2
                  down vote










                  up vote
                  2
                  down vote









                  One way is to export two lists to Excel and then use the power of Excel to find the missing ones.



                  1. Under Reports - Contact Reports, run the Relationship Report and under Columns check "Contact ID" so that it appears in the output.

                  2. From the Actions dropdown export that to CSV.

                  3. Under Reports - Contact Reports, run the Constituent Summary Report and under Columns check "Contact ID".

                  4. From the Actions dropdown export that to CSV.

                  5. Do something like described here to find the contact ids that are in the second list but not the first. Note you'll need to sort the lists by contact id first for this method to work.
                    https://www.extendoffice.com/documents/excel/3124-excel-compare-two-columns-for-missing-values.html#formula

                  There are other ways to do it in Excel if you don't like that one above. Search the internet for something like "how to tell which values are missing from two lists in excel". If you're using LibreOffice or similar I'm sure it can be done too.






                  share|improve this answer












                  One way is to export two lists to Excel and then use the power of Excel to find the missing ones.



                  1. Under Reports - Contact Reports, run the Relationship Report and under Columns check "Contact ID" so that it appears in the output.

                  2. From the Actions dropdown export that to CSV.

                  3. Under Reports - Contact Reports, run the Constituent Summary Report and under Columns check "Contact ID".

                  4. From the Actions dropdown export that to CSV.

                  5. Do something like described here to find the contact ids that are in the second list but not the first. Note you'll need to sort the lists by contact id first for this method to work.
                    https://www.extendoffice.com/documents/excel/3124-excel-compare-two-columns-for-missing-values.html#formula

                  There are other ways to do it in Excel if you don't like that one above. Search the internet for something like "how to tell which values are missing from two lists in excel". If you're using LibreOffice or similar I'm sure it can be done too.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 2 hours ago









                  Demerit

                  2,8941516




                  2,8941516




















                      up vote
                      1
                      down vote













                      While this isn't an ideal fix, it's a quick one if you know SQL:



                      • Create a new group called "Contacts without relationship".

                      • Note the group ID. You can find the group id by hovering the mouse over the "Contacts" link of the group on the Contacts » Manage Groups page. In the screenshot below, you can see that the group ID of "Summer Program Volunteers" is "3".

                      • Run this SQL statement:

                        SELECT '3', cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_a WHERE cr.id IS NULL AND cc.id IN (SELECT cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_b WHERE cr.id IS NULL) ORDER BY cc.id;


                      Replace the "3" above with YOUR group ID before you run it.



                      Now, everyone without a relationship will be in your group.



                      Screenshot for group ID (click to zoom):
                      enter image description here






                      share|improve this answer




















                      • Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                        – Demerit
                        1 min ago














                      up vote
                      1
                      down vote













                      While this isn't an ideal fix, it's a quick one if you know SQL:



                      • Create a new group called "Contacts without relationship".

                      • Note the group ID. You can find the group id by hovering the mouse over the "Contacts" link of the group on the Contacts » Manage Groups page. In the screenshot below, you can see that the group ID of "Summer Program Volunteers" is "3".

                      • Run this SQL statement:

                        SELECT '3', cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_a WHERE cr.id IS NULL AND cc.id IN (SELECT cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_b WHERE cr.id IS NULL) ORDER BY cc.id;


                      Replace the "3" above with YOUR group ID before you run it.



                      Now, everyone without a relationship will be in your group.



                      Screenshot for group ID (click to zoom):
                      enter image description here






                      share|improve this answer




















                      • Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                        – Demerit
                        1 min ago












                      up vote
                      1
                      down vote










                      up vote
                      1
                      down vote









                      While this isn't an ideal fix, it's a quick one if you know SQL:



                      • Create a new group called "Contacts without relationship".

                      • Note the group ID. You can find the group id by hovering the mouse over the "Contacts" link of the group on the Contacts » Manage Groups page. In the screenshot below, you can see that the group ID of "Summer Program Volunteers" is "3".

                      • Run this SQL statement:

                        SELECT '3', cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_a WHERE cr.id IS NULL AND cc.id IN (SELECT cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_b WHERE cr.id IS NULL) ORDER BY cc.id;


                      Replace the "3" above with YOUR group ID before you run it.



                      Now, everyone without a relationship will be in your group.



                      Screenshot for group ID (click to zoom):
                      enter image description here






                      share|improve this answer












                      While this isn't an ideal fix, it's a quick one if you know SQL:



                      • Create a new group called "Contacts without relationship".

                      • Note the group ID. You can find the group id by hovering the mouse over the "Contacts" link of the group on the Contacts » Manage Groups page. In the screenshot below, you can see that the group ID of "Summer Program Volunteers" is "3".

                      • Run this SQL statement:

                        SELECT '3', cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_a WHERE cr.id IS NULL AND cc.id IN (SELECT cc.id from civicrm_contact cc LEFT JOIN civicrm_relationship cr ON cc.id = cr.contact_id_b WHERE cr.id IS NULL) ORDER BY cc.id;


                      Replace the "3" above with YOUR group ID before you run it.



                      Now, everyone without a relationship will be in your group.



                      Screenshot for group ID (click to zoom):
                      enter image description here







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered 22 mins ago









                      Jon G - Megaphone Tech

                      24.7k11766




                      24.7k11766











                      • Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                        – Demerit
                        1 min ago
















                      • Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                        – Demerit
                        1 min ago















                      Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                      – Demerit
                      1 min ago




                      Nice. I might add cc.is_deleted = 0 to both the main and subqueries. And possibly restrict it to ACTIVE relationships, which might even require comparing end_date to the current date.
                      – Demerit
                      1 min ago










                      up vote
                      0
                      down vote













                      Either you can create a custom report to achieve that or can be done through CiviCRM API in a module code.






                      share|improve this answer
























                        up vote
                        0
                        down vote













                        Either you can create a custom report to achieve that or can be done through CiviCRM API in a module code.






                        share|improve this answer






















                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          Either you can create a custom report to achieve that or can be done through CiviCRM API in a module code.






                          share|improve this answer












                          Either you can create a custom report to achieve that or can be done through CiviCRM API in a module code.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 3 hours ago









                          Hassan Farooq

                          508110




                          508110



























                               

                              draft saved


                              draft discarded















































                               


                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcivicrm.stackexchange.com%2fquestions%2f27240%2fsearching-for-someone-not-in-a-relationship%23new-answer', 'question_page');

                              );

                              Post as a guest













































































                              Comments

                              Popular posts from this blog

                              Long meetings (6-7 hours a day): Being “babysat” by supervisor

                              Is the Concept of Multiple Fantasy Races Scientifically Flawed? [closed]

                              Confectionery