-1
votes

Comment trouver le nom des joueurs de football avec le même prénom mais différents noms de famille?

J'ai besoin de trouver les noms des joueurs de l'équipe de football A qui possèdent le même prénom, mais différent nom de famille en tant que joueurs de l'équipe de football B. J'ai besoin de produire les noms complets de tous les joueurs de l'équipe A, pas seulement 'John' . Je suis capable d'utiliser une colonne supplémentaire avec des identifiants de joueurs uniques dans toutes les équipes.

Table essentiellement de la table ressemble à ceci: p> xxx pré>

Je peux produire une liste d'équipes avec des noms avec le même prénom en tant que joueurs d'équipe B. P>

SELECT firstname, lastname FROM table


2 commentaires

Dupliqué possible de Sélectionnez des lignes avec la même colonne une colonne différente B


Ces codes ne "produisent évidemment pas" une liste d'équipes un nom avec le même prénom que les joueurs d'équipe B ". Pourquoi dites-vous que ça fait? Votre code renvoie des lignes où le lecteur [prénom] [Nom] est sur une équipe. PS ta dernière phrase n'est pas claire. Utilisez suffisamment de mots, de phrases et de références à des éléments d'exemples pour dire clairement et parfaitement ce que vous voulez dire. PS S'il vous plaît avant de poster regarder la version formatée de votre message sous la zone d'édition. Lisez l'aide de Modifier Re Inline & Block Formats pour le code et les citations. (Cliquez sur 'Édité ...' pour voir comment votre message a été modifié.)


4 Réponses :


0
votes

Vous pouvez utiliser une expression de table commune, puis faire une jointure interne sur le prénom. Dans l'exemple ci-dessous, j'ai divisé les équipes à l'aide de la CTE, puis rejoignant que les équipes ne correspondent pas, le nom de famille ne correspond pas et le prénom correspond au nom.

J'ai ensuite utilisé un syndicat déclaration pour montrer comment le joueur de l'autre équipe peut également être affiché. P>

declare @soccerteam table
(
    FirstName nvarchar(50),
    LastName nvarchar(50),
    Team nvarchar(3)
);

insert @soccerteam (FirstName, LastName, Team)
values
('John',       'Snow',         'A'),
('Batman',     'Dies',         'B'),
('John',       'Dies',         'B');

select * from @soccerteam;

with teamB as (select FirstName, LastName, Team from @soccerteam where Team='B')

select 'Players in Team A matching Team B', a.* from @soccerteam a inner join teamB b on a.FirstName=b.FirstName and a.LastName<>b.LastName and a.Team<>b.Team
union
select 'Players in Team B matching Team A', b.* from @soccerteam a inner join teamB b on a.FirstName=b.FirstName and a.LastName<>b.LastName and a.Team<>b.Team;


0 commentaires

1
votes

Essayez ce qui suit:

select distinct t1.FirstName
from
(
SELECT firstname, lastname FROM @t where Team = 'A'
) as t1
inner join
(
SELECT firstname, lastname FROM @t where Team = 'B'
) as t2
on (t1.FirstName = t2.FirstName)
where t1.LastName <> t2.LastName


5 commentaires

Cela ne créerait-il pas des doublons du même joueur s'il y avait plus d'un 'John' en équipe B?


@Campioncircle Oui, ce serait. Cela devrait avoir le distinct.


J'aurais dû spécifier, je suis obligé de produire une équipe complète un nom.


@Campioncircle Ce que vous voulez obtenir est le nom des joueurs en équipe A qui sont en équipe B avec le même nom et le même nom de famille?


Oui. J'ai ajouté des identifiants aux joueurs, a changé votre première ligne pour "sélectionner distinct T1.Id" et ci-joint que pour indiquer "Sélectionnez FirstName, nom de famille à partir de la table où id in (...)



0
votes

Vous pouvez utiliser le code suivant:

;WITH CTE AS
(
  SELECT *
  FROM Table 
  WHERE Team = 'A'
),CTE1 AS
(
  SELECT *
  FROM Table
  WHERE Team = 'B'
)
SELECT *
FROM CTE R1
JOIN CTE1 R2 ON R1.FirstName = R2.FirstName
             AND R1.LastName <> R2.LastName 


0 commentaires

1
votes

aussi simple que:

xxx


0 commentaires