У меня есть следующая консультация sql server:
select * from
MobileUsuario,
MobileCliente,
MobileLicencia
where
MobileUsuario.IdCliente=MobileCliente.IdCliente
and MobileUsuario.IdCliente=MobileLicencia.IdCliente
and MobileLicencia.IdCliente=MobileCliente.IdCliente
И он возвращает мне следующее:
Как я делаю, чтобы удалять дубликаты, не будучи должен использовать distinct???
Мне кажется, что ты не имеешь повторенные, а различные комбинации линий между различными подмостками. Следовательно, DISTINCT не harГЎ никакое различие.
--Crear datos de prueba
CREATE TABLE MobileCliente(
IdCliente int,
NombreCliente varchar(100));
INSERT INTO MobileCliente
VALUES(1, 'Cliente 1')
CREATE TABLE MobileUsuario(
IdCliente int,
IdUsuario int,
NombreUsuario varchar(100));
INSERT INTO MobileUsuario
VALUES(1, 10, 'Usuario 10'),
(1, 20, 'Usuario 20'),
(1, 30, 'Usuario 30');
CREATE TABLE MobileLicencia(
IdCliente int,
IdLicencia int);
INSERT INTO MobileLicencia
VALUES(1, 100),
(1, 200),
(1, 300);
--Consultas sin y con Distinct
SELECT *
FROM MobileUsuario mu
JOIN MobileCliente mc ON mu.IdCliente = mc.IdCliente
JOIN MobileLicencia ml ON mu.IdCliente = ml.IdCliente;
SELECT DISTINCT *
FROM MobileUsuario mu
JOIN MobileCliente mc ON mu.IdCliente = mc.IdCliente
JOIN MobileLicencia ml ON mu.IdCliente = ml.IdCliente;
GO
--Descomentar para borrar tablas en area de pruebas
--DROP TABLE MobileCliente, MobileLicencia, MobileUsuario;
, Чтобы мочь решать проблему, ты нуждаешься в том, чтобы определить, как будут связывать их mГєltiples линии того же клиента таблицы пользователей с ними mГєltiples линии того же клиента таблицы лицензий, и которые pasarГЎ, когда Ваш nГєmero он не совпадет. Это уже проблема правил дела, которое ты должен решать перед тем, как просить какую-то soluciГіn в cГіdigo.
Оставил tambiГ©n пример как serГ, - если бы была одна relaciГіn между линиями пользователей и лицензий.
--Crear datos de prueba
CREATE TABLE MobileCliente(
IdCliente int,
NombreCliente varchar(100));
INSERT INTO MobileCliente
VALUES(1, 'Cliente 1')
CREATE TABLE MobileUsuario(
IdCliente int,
IdUsuario int,
NombreUsuario varchar(100));
INSERT INTO MobileUsuario
VALUES(1, 10, 'Usuario 10'),
(1, 20, 'Usuario 20'),
(1, 30, 'Usuario 30');
CREATE TABLE MobileLicencia(
IdCliente int,
IdUsuario int,
IdLicencia int);
INSERT INTO MobileLicencia
VALUES(1, 10, 100),
(1, 20, 200),
(1, 30, 300);
--Consulta con condición adicional.
SELECT *
FROM MobileUsuario mu
JOIN MobileCliente mc ON mu.IdCliente = mc.IdCliente
JOIN MobileLicencia ml ON mu.IdCliente = ml.IdCliente
AND mu.IdUsuario = ml.IdUsuario;
GO
--Descomentar para borrar tablas en area de pruebas
--DROP TABLE MobileCliente, MobileLicencia, MobileUsuario;
Помни, что в консультации оператор * значит, что ты выбираешь все результаты таблицы или подмостков, когда ты делаешь joins, как это твой случай, не могут воспринять их demГЎs данные о твоей консультации в изображении, которое ты переместил нас, но я почти уверен, что какой-либо из данных отличается между каждым tupla (обычно IDВґs подмостков) и помни, что с единственной различной информацией это новость tupla, поэтому кажись как будто он повторялся, я рекомендую тебе просачиваться ты selecciГіn Гєnicamente по данным, в которых ты нуждаешься:
select
MobileUsuario.idUsuario,
ModileUsuario.Activo
/* Y cualquier otro atributo de las otras tablas que necesites*/
from
MobileUsuario,
MobileCliente,
MobileLicencia
where
MobileUsuario.IdCliente=MobileCliente.IdCliente
and MobileUsuario.IdCliente=MobileLicencia.IdCliente
and MobileLicencia.IdCliente=MobileCliente.IdCliente