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

  • Home
  • SEARCH
  • 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 4553994
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T17:01:39+00:00 2026-05-21T17:01:39+00:00

I’m working on a database which can be synthetized like: TAB1: NICK, COUNTRY TAB2:

  • 0

I’m working on a database which can be synthetized like:

TAB1: NICK, COUNTRY
TAB2: PLAYER, FRIEND

In TAB2, PLAYER and FRIEND both can connect to respective a TAB1.NICK; NICK is a primary key, PLAYER and FRIEND are both foreign keys.

I need to find how many players are friends only with people from the same country, but, after a couple of afternoons I still can’t manage to do it…

The last thing I tried:

select count(*) from TAB1 as p1
join TAB2 as f1 on p1.nick = f1.player
join TAB1 as p2 on f1.friend = p2.nick
where p1.country is not null and p2.country is not null
and p1.country = p2.country
and not exists (select * from TAB1 as p0
    join TAB2 as f0 on p0.nick = f0.nick
    join TAB1 as p3 on f0.friend = p3.nickname
    where p0.country is not null and p3.country is not null
    and p0.country <> p3.country)
  • 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-21T17:01:40+00:00Added an answer on May 21, 2026 at 5:01 pm

    Build the query up piece-meal – start with the easier parts, and continue to the harder. The key observation to making it work is that you need to use two joins to the same table. This query gives the list of pairs where the two people come from the same country:

    SELECT p1.nick, p1.country, p2.nick, p2.country
      FROM tab2
      JOIN tab1 AS p1 ON tab2.player = p1.nick
      JOIN tab1 AS p2 ON tab2.friend = p2.nick
     WHERE p1.country = p2.country
    

    This counts the number of players with one or more friends from the same country:

    SELECT COUNT(DISTINCT p1.nick)
      FROM tab2
      JOIN tab1 AS p1 ON tab2.player = p1.nick
      JOIN tab1 AS p2 ON tab2.friend = p2.nick
     WHERE p1.country = p2.country
    

    And, if what you are after is people who only have friends from the same country as they come from (as suggested in the comment), then you need to establish that the player has no friends where the friend’s country is not the player’s country. You get into the interesting question: does some who has no friends get counted? Since they don’t have any friends from the same country, they’re not counted by the query below:

    SELECT COUNT(DISTINCT p1.nick)
      FROM tab2
      JOIN tab1 AS p1 ON tab2.player = p1.nick
      JOIN tab1 AS p2 ON tab2.friend = p2.nick
     WHERE p1.country = p2.country
       AND NOT EXISTS
               (SELECT *
                  FROM tab2 AS t2
                  JOIN tab1 AS p3 ON t2.player = p3.nick
                  JOIN tab1 AS p4 ON t2.friend = p4.nick
                 WHERE p3.country != p4.country
                   AND p3.nick = p1.nick
               )
    

    This says “players who have at least one friend from their own country and where there is no friend for the player who comes from a different country”.

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

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
Does anyone know how can I replace this 2 symbol below from the string
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I have some data like this: 1 2 3 4 5 9 2 6
I want use html5's new tag to play a wav file (currently only supported
Seemingly simple, but I cannot find anything relevant on the web. What is the
this is what i have right now Drawing an RSS feed into the php,
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have just tried to save a simple *.rtf file with some websites and

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.