Select rows where one row meets a condition












0















I have a table with 3 columns:



UserId  ProductId    Status
1 100 1
1 1 0
2 100 0
4 100 0
5 1 1
5 100 1
6 2 1


I want to select all rows that have ProductId = 100 at least once per user and the user has atleast one more record other than with ProductId = 100.



Expected results:



UserId  ProductId    Status
1 100 1
1 1 0
5 1 1
5 100 1


I solved it like this by referring to another solution:



select "ProductId", "UserId", "Status"
from "MyTable"
WHERE EXISTS (
SELECT 1 FROM "MyTable" WHERE "ProductId" = 100
)


But it returns all users where even one record is 100.









share







New contributor




asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0















    I have a table with 3 columns:



    UserId  ProductId    Status
    1 100 1
    1 1 0
    2 100 0
    4 100 0
    5 1 1
    5 100 1
    6 2 1


    I want to select all rows that have ProductId = 100 at least once per user and the user has atleast one more record other than with ProductId = 100.



    Expected results:



    UserId  ProductId    Status
    1 100 1
    1 1 0
    5 1 1
    5 100 1


    I solved it like this by referring to another solution:



    select "ProductId", "UserId", "Status"
    from "MyTable"
    WHERE EXISTS (
    SELECT 1 FROM "MyTable" WHERE "ProductId" = 100
    )


    But it returns all users where even one record is 100.









    share







    New contributor




    asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0








      I have a table with 3 columns:



      UserId  ProductId    Status
      1 100 1
      1 1 0
      2 100 0
      4 100 0
      5 1 1
      5 100 1
      6 2 1


      I want to select all rows that have ProductId = 100 at least once per user and the user has atleast one more record other than with ProductId = 100.



      Expected results:



      UserId  ProductId    Status
      1 100 1
      1 1 0
      5 1 1
      5 100 1


      I solved it like this by referring to another solution:



      select "ProductId", "UserId", "Status"
      from "MyTable"
      WHERE EXISTS (
      SELECT 1 FROM "MyTable" WHERE "ProductId" = 100
      )


      But it returns all users where even one record is 100.









      share







      New contributor




      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      I have a table with 3 columns:



      UserId  ProductId    Status
      1 100 1
      1 1 0
      2 100 0
      4 100 0
      5 1 1
      5 100 1
      6 2 1


      I want to select all rows that have ProductId = 100 at least once per user and the user has atleast one more record other than with ProductId = 100.



      Expected results:



      UserId  ProductId    Status
      1 100 1
      1 1 0
      5 1 1
      5 100 1


      I solved it like this by referring to another solution:



      select "ProductId", "UserId", "Status"
      from "MyTable"
      WHERE EXISTS (
      SELECT 1 FROM "MyTable" WHERE "ProductId" = 100
      )


      But it returns all users where even one record is 100.







      mysql postgresql





      share







      New contributor




      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 9 mins ago









      asanasasanas

      101




      101




      New contributor




      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      asanas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          0














          If you can handle both products on the same row:



          select t1.UserId, t1.ProductId, t1.Status,
          t2.ProductId as otherproduct, t2.Status as otherproductstatus
          from MyTable t1
          join MyTable t2
          on t1.UserID=t2.UserID
          AND t1.ProductID=100
          AND t2.productID!=100


          However with this you'll get all products for a user:





          share























            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "182"
            };
            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',
            autoActivateHeartbeat: false,
            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
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            asanas is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232203%2fselect-rows-where-one-row-meets-a-condition%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            If you can handle both products on the same row:



            select t1.UserId, t1.ProductId, t1.Status,
            t2.ProductId as otherproduct, t2.Status as otherproductstatus
            from MyTable t1
            join MyTable t2
            on t1.UserID=t2.UserID
            AND t1.ProductID=100
            AND t2.productID!=100


            However with this you'll get all products for a user:





            share




























              0














              If you can handle both products on the same row:



              select t1.UserId, t1.ProductId, t1.Status,
              t2.ProductId as otherproduct, t2.Status as otherproductstatus
              from MyTable t1
              join MyTable t2
              on t1.UserID=t2.UserID
              AND t1.ProductID=100
              AND t2.productID!=100


              However with this you'll get all products for a user:





              share


























                0












                0








                0







                If you can handle both products on the same row:



                select t1.UserId, t1.ProductId, t1.Status,
                t2.ProductId as otherproduct, t2.Status as otherproductstatus
                from MyTable t1
                join MyTable t2
                on t1.UserID=t2.UserID
                AND t1.ProductID=100
                AND t2.productID!=100


                However with this you'll get all products for a user:





                share













                If you can handle both products on the same row:



                select t1.UserId, t1.ProductId, t1.Status,
                t2.ProductId as otherproduct, t2.Status as otherproductstatus
                from MyTable t1
                join MyTable t2
                on t1.UserID=t2.UserID
                AND t1.ProductID=100
                AND t2.productID!=100


                However with this you'll get all products for a user:






                share











                share


                share










                answered 1 min ago









                danblackdanblack

                2,0131213




                2,0131213






















                    asanas is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    asanas is a new contributor. Be nice, and check out our Code of Conduct.













                    asanas is a new contributor. Be nice, and check out our Code of Conduct.












                    asanas is a new contributor. Be nice, and check out our Code of Conduct.
















                    Thanks for contributing an answer to Database Administrators Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f232203%2fselect-rows-where-one-row-meets-a-condition%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    ف. موراي أبراهام

                    صرب

                    كأس إنترتوتو