Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7544901
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T08:47:35+00:00 2026-05-30T08:47:35+00:00

I want to perform a select which returns a few columns of data, and

  • 0

I want to perform a select which returns a few columns of data, and then also a nested table of related rows from another table (actually the same table joined on itself but I think this is irrelevant).

So the data is something like this:

id  name   registered
1   Dan      N
2   Bill     N
3   Bob      N
4   Dan      N
5   Bill     Y
6   Dan      Y

The idea is to perform a select which finds all the unregistered people who could be related to a registered account.

So the result would look like

registered.id   name   notreg.id   name
  5             Bill     2          Bill
  6             Dan      1          Dan
                         4          Dan

I can handle all the selection criteria etc, and have a query that returns a normal inner join that finds this, but want to know if it’s possible to get a result set kind of like this, so no repeated values on the left side?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T08:47:36+00:00Added an answer on May 30, 2026 at 8:47 am

    You’re probably better off suppressing duplicates in the Client (for example in Jasper Reports uncheck Print Repeated Value or in the XML set isPrintRepeatedValues="false")

    However on anything that supports a WITH (CTE) and ROW_NUMBER() (e.g. Oracle, SQL Server 2005+) .

    WITH ns 
             AS (SELECT ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) rn, 
                        id, 
                        name, 
                        registered 
                 FROM   t 
                 WHERE  registered = 'N') 
        SELECT t.id, 
               t.name, 
               ns.id, 
               ns.name 
        FROM   ns 
               LEFT JOIN t 
                 ON ns.name = t.name 
                    AND t.registered = 'Y' 
                    AND ns.rn = 1 
        WHERE  ns.name IN (SELECT name 
                           FROM   t 
                           WHERE  registered = 'Y')  
        
        ORDER  BY ns.name 
    

    See working example

    If you don’t have WITH and ROW_NUMBER you can do this

    SELECT t.id, 
           t.name, 
           ns.id, 
           ns.name 
    FROM   t ns 
           LEFT JOIN (SELECT MIN(id) id, 
                             name 
                      FROM   t 
                      WHERE  registered = 'N' 
                      GROUP  BY name) MINNS 
             ON ns.id = MINNS.id 
           LEFT JOIN t 
             ON ns.name = t.name 
                AND t.registered = 'Y' 
                AND MINNS.id IS NOT NULL 
    WHERE  ns.registered = 'N' 
           AND ns.name IN (SELECT name 
                           FROM   t 
                           WHERE  registered = 'Y') 
    ORDER  BY ns.name, 
              ns.id
    

    See working example

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to return only the last 15 rows in my table, then the
I want to perform a LIKE style comparison with an IN operator e.g.: select
I want to perform a simple query like this in my PHP, SELECT noslots
I want perform a easy task in android, which when receiving a call the
I want to perform an jquery request to php and then I want php
I want to perform action on change in count of rows of an HTML
I want to perform changes in the code which was developed using iOS 3.0,
I have an oracle table with nested tables in some of the columns. Now,
I want to have a SelectAll function which takes in a few arguments (class,
I have gridview which has columns of data and a button below the Apply

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.