Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 22.05.2020 10:40:08

Как вывести только одинаковые значения в двух колонках БД?

Здравствуйте!
Есть таблица пользователей, есть имя firstname и фамилия lastname. У некоторых пользователей есть по 2 и более регистрации, мне нужно найти таких и вывести в список. То есть, кто зарегистрирован один раз их не трогаем, а если Иван Иванов три раза зарегистрирован то вывести должно примерно так:

Иван Иванов
Иван Иванов
Иван Иванов

Изменено betmenik (22.05.2020 10:40:46)

Не в сети

#2 24.05.2020 02:06:43

Re: Как вывести только одинаковые значения в двух колонках БД?

select *
from users usr
inner join (
	select  count(*) as cnt,
		firstname,
		lastname
	from users
	group by firstname, username
	having cnt>1
) as u ON u.firstname = usr.firstname and u.lastname = usr.lastname

Не в сети

#3 12.01.2021 09:41:02

Re: Как вывести только одинаковые значения в двух колонках БД?

Только я вот не понимаю, зачем их выводить, если это могут быть 3 разных пользователя.

Не в сети

#4 12.01.2021 15:05:27

Re: Как вывести только одинаковые значения в двух колонках БД?

тем более если это Иванов Сергей Михайлович например
у меня не самая распространенная фамилия и то полных совпадений в сети не мало

Изменено vavprog (12.01.2021 15:06:12)

Не в сети

#5 26.01.2021 18:16:30

Re: Как вывести только одинаковые значения в двух колонках БД?

inner join (
    select  count(*) as cnt,

Зачем так сложно? Подзапрос не нужен, JOIN'ить таблицу можно саму на себя.

select  count(*) as cnt,
	u.firstname,
	u.lastname
from users 
join users u on users.firstname = u.firstname and users.lastname = u.lastname 
group by u.firstname, u.username
having cnt > 1

Не в сети

#6 29.01.2021 13:16:46

Re: Как вывести только одинаковые значения в двух колонках БД?

select  count(*) as cnt,
    firstname,
    lastname
from users
group by firstname, username
having cnt > 1

Не в сети

Подвал раздела