postgresql inner join and left join











up vote
1
down vote

favorite












I have the following database structure, with postgres 9.5:



create table users (
id character varying(255),
email character varying(127)
);

create table org_users(
id character varying(255),
user_id character varying(255), -- foreign key to users.id
manager_org_user_id character varying(255) -- refers to org_users.id; same table referential dependency
);

insert into users (id, email) values ('111', 'user1@example.com');
insert into users (id, email) values ('222', 'user2@example.com');
insert into users (id, email) values ('333', 'manager@example.com');

insert into org_users (id, user_id, manager_org_user_id) values ('o1', '111', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o2', '222', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o3', '333', null);


I have three users in my table. user1@example.com, user2@example.com are two normal users. manager@example.com is their manager. Now I want to display the following structure:



org_user_id, employee_user_id, employee_email, manager_org_user_id, manager_user_id, manager_email


I tried with the following sql query but it fails to work for me with syntax error near JOIN. Any help ?



select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
u2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id::text = us.id::text,
LEFT JOIN org_users ou1 ON ou1.id::text = ou.manager_org_user_id::text
LEFT JOIN users us2 ON ou1.user_id::text = us2.id::text;









share|improve this question




















  • 1




    JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
    – user8834780
    Nov 13 at 16:58

















up vote
1
down vote

favorite












I have the following database structure, with postgres 9.5:



create table users (
id character varying(255),
email character varying(127)
);

create table org_users(
id character varying(255),
user_id character varying(255), -- foreign key to users.id
manager_org_user_id character varying(255) -- refers to org_users.id; same table referential dependency
);

insert into users (id, email) values ('111', 'user1@example.com');
insert into users (id, email) values ('222', 'user2@example.com');
insert into users (id, email) values ('333', 'manager@example.com');

insert into org_users (id, user_id, manager_org_user_id) values ('o1', '111', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o2', '222', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o3', '333', null);


I have three users in my table. user1@example.com, user2@example.com are two normal users. manager@example.com is their manager. Now I want to display the following structure:



org_user_id, employee_user_id, employee_email, manager_org_user_id, manager_user_id, manager_email


I tried with the following sql query but it fails to work for me with syntax error near JOIN. Any help ?



select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
u2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id::text = us.id::text,
LEFT JOIN org_users ou1 ON ou1.id::text = ou.manager_org_user_id::text
LEFT JOIN users us2 ON ou1.user_id::text = us2.id::text;









share|improve this question




















  • 1




    JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
    – user8834780
    Nov 13 at 16:58















up vote
1
down vote

favorite









up vote
1
down vote

favorite











I have the following database structure, with postgres 9.5:



create table users (
id character varying(255),
email character varying(127)
);

create table org_users(
id character varying(255),
user_id character varying(255), -- foreign key to users.id
manager_org_user_id character varying(255) -- refers to org_users.id; same table referential dependency
);

insert into users (id, email) values ('111', 'user1@example.com');
insert into users (id, email) values ('222', 'user2@example.com');
insert into users (id, email) values ('333', 'manager@example.com');

insert into org_users (id, user_id, manager_org_user_id) values ('o1', '111', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o2', '222', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o3', '333', null);


I have three users in my table. user1@example.com, user2@example.com are two normal users. manager@example.com is their manager. Now I want to display the following structure:



org_user_id, employee_user_id, employee_email, manager_org_user_id, manager_user_id, manager_email


I tried with the following sql query but it fails to work for me with syntax error near JOIN. Any help ?



select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
u2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id::text = us.id::text,
LEFT JOIN org_users ou1 ON ou1.id::text = ou.manager_org_user_id::text
LEFT JOIN users us2 ON ou1.user_id::text = us2.id::text;









share|improve this question















I have the following database structure, with postgres 9.5:



create table users (
id character varying(255),
email character varying(127)
);

create table org_users(
id character varying(255),
user_id character varying(255), -- foreign key to users.id
manager_org_user_id character varying(255) -- refers to org_users.id; same table referential dependency
);

insert into users (id, email) values ('111', 'user1@example.com');
insert into users (id, email) values ('222', 'user2@example.com');
insert into users (id, email) values ('333', 'manager@example.com');

insert into org_users (id, user_id, manager_org_user_id) values ('o1', '111', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o2', '222', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o3', '333', null);


I have three users in my table. user1@example.com, user2@example.com are two normal users. manager@example.com is their manager. Now I want to display the following structure:



org_user_id, employee_user_id, employee_email, manager_org_user_id, manager_user_id, manager_email


I tried with the following sql query but it fails to work for me with syntax error near JOIN. Any help ?



select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
u2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id::text = us.id::text,
LEFT JOIN org_users ou1 ON ou1.id::text = ou.manager_org_user_id::text
LEFT JOIN users us2 ON ou1.user_id::text = us2.id::text;






sql database postgresql join






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 at 16:57

























asked Nov 13 at 16:51









Sankar

2,20283253




2,20283253








  • 1




    JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
    – user8834780
    Nov 13 at 16:58
















  • 1




    JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
    – user8834780
    Nov 13 at 16:58










1




1




JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
– user8834780
Nov 13 at 16:58






JOIN users us ON ou.user_id::text = us.id::text, you need to remove , at end; also u2.email as manager_email should be us2.email; no need for cast to text (though it doesn't hurt output)
– user8834780
Nov 13 at 16:58














2 Answers
2






active

oldest

votes

















up vote
1
down vote



accepted










Remove space, rename u2.email, drop the cast to text:



select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
us2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id = us.id
LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
LEFT JOIN users us2 ON ou1.user_id = us2.id





share|improve this answer




























    up vote
    1
    down vote













    This query resolve your problem:



    SELECT ou.id as employee_org_user_id,
    us.id as employee_user_id,
    us.email as employee_email,
    ou.manager_org_user_id as manager_org_user_id
    FROM org_users ou JOIN users us ON ou.user_id = us.id




    Live example:




    • http://tpcg.io/PuMym5






    share|improve this answer

















    • 1




      Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
      – Sankar
      Nov 13 at 17:07











    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    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: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    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
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285887%2fpostgresql-inner-join-and-left-join%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    1
    down vote



    accepted










    Remove space, rename u2.email, drop the cast to text:



    select ou.id as employee_org_user_id,
    us.id as employee_user_id,
    us.email as employee_email,
    ou.manager_org_user_id as manager_org_user_id,
    us2.email as manager_email
    from org_users ou
    JOIN users us ON ou.user_id = us.id
    LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
    LEFT JOIN users us2 ON ou1.user_id = us2.id





    share|improve this answer

























      up vote
      1
      down vote



      accepted










      Remove space, rename u2.email, drop the cast to text:



      select ou.id as employee_org_user_id,
      us.id as employee_user_id,
      us.email as employee_email,
      ou.manager_org_user_id as manager_org_user_id,
      us2.email as manager_email
      from org_users ou
      JOIN users us ON ou.user_id = us.id
      LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
      LEFT JOIN users us2 ON ou1.user_id = us2.id





      share|improve this answer























        up vote
        1
        down vote



        accepted







        up vote
        1
        down vote



        accepted






        Remove space, rename u2.email, drop the cast to text:



        select ou.id as employee_org_user_id,
        us.id as employee_user_id,
        us.email as employee_email,
        ou.manager_org_user_id as manager_org_user_id,
        us2.email as manager_email
        from org_users ou
        JOIN users us ON ou.user_id = us.id
        LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
        LEFT JOIN users us2 ON ou1.user_id = us2.id





        share|improve this answer












        Remove space, rename u2.email, drop the cast to text:



        select ou.id as employee_org_user_id,
        us.id as employee_user_id,
        us.email as employee_email,
        ou.manager_org_user_id as manager_org_user_id,
        us2.email as manager_email
        from org_users ou
        JOIN users us ON ou.user_id = us.id
        LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
        LEFT JOIN users us2 ON ou1.user_id = us2.id






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 at 17:01









        user8834780

        552118




        552118
























            up vote
            1
            down vote













            This query resolve your problem:



            SELECT ou.id as employee_org_user_id,
            us.id as employee_user_id,
            us.email as employee_email,
            ou.manager_org_user_id as manager_org_user_id
            FROM org_users ou JOIN users us ON ou.user_id = us.id




            Live example:




            • http://tpcg.io/PuMym5






            share|improve this answer

















            • 1




              Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
              – Sankar
              Nov 13 at 17:07















            up vote
            1
            down vote













            This query resolve your problem:



            SELECT ou.id as employee_org_user_id,
            us.id as employee_user_id,
            us.email as employee_email,
            ou.manager_org_user_id as manager_org_user_id
            FROM org_users ou JOIN users us ON ou.user_id = us.id




            Live example:




            • http://tpcg.io/PuMym5






            share|improve this answer

















            • 1




              Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
              – Sankar
              Nov 13 at 17:07













            up vote
            1
            down vote










            up vote
            1
            down vote









            This query resolve your problem:



            SELECT ou.id as employee_org_user_id,
            us.id as employee_user_id,
            us.email as employee_email,
            ou.manager_org_user_id as manager_org_user_id
            FROM org_users ou JOIN users us ON ou.user_id = us.id




            Live example:




            • http://tpcg.io/PuMym5






            share|improve this answer












            This query resolve your problem:



            SELECT ou.id as employee_org_user_id,
            us.id as employee_user_id,
            us.email as employee_email,
            ou.manager_org_user_id as manager_org_user_id
            FROM org_users ou JOIN users us ON ou.user_id = us.id




            Live example:




            • http://tpcg.io/PuMym5







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 13 at 17:02









            ℛɑƒæĿ

            98721025




            98721025








            • 1




              Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
              – Sankar
              Nov 13 at 17:07














            • 1




              Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
              – Sankar
              Nov 13 at 17:07








            1




            1




            Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
            – Sankar
            Nov 13 at 17:07




            Thanks, it works. But I am accepting the other answer as that was marginally earlier. Thank you once again.
            – Sankar
            Nov 13 at 17:07


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • 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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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%2fstackoverflow.com%2fquestions%2f53285887%2fpostgresql-inner-join-and-left-join%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

            How to send String Array data to Server using php in android

            Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

            Is anime1.com a legal site for watching anime?