Why do I get repeated columns when I do the following query? - Solved

-1

I use this select, I want to obtain from the rows (message_id, message, message_date, username_user_user_id, user_name, user_user_user_id_user1, user_user_name_user_id1) with their respective data, the problem is that I get repeated columns thank you very much in advance

SELECT 
l.MENSAJE_id,
l.MENSAJE,
l.FECHA_MENSAJE ,
l.usuario_has_usuario_usuario_id_usuario,
l.usuario_has_usuario_usuario_id_usuario1,
r.nom_usuario,
s.nom_usuario
FROM mensaje l
INNER JOIN USUARIO_has_usuario p ON p.usuario_ID_USUARIO = l.usuario_has_usuario_usuario_id_usuario
INNER JOIN USUARIO r ON r.ID_USUARIO = p.usuario_ID_USUARIO
INNER JOIN USUARIO_has_usuario q ON q.usuario_ID_USUARIO1 = l.usuario_has_usuario_usuario_id_usuario1 
INNER JOIN USUARIO s ON s.ID_USUARIO = q.usuario_ID_USUARIO1 

//////////////////////////////////////////////////////////////////////////////////// este todoo el script //////////////////////////////////////////////////////////////////////////////////////////////

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mensagero
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS 'mensagero' DEFAULT CHARACTER SET utf8 ;
USE 'mensagero' ;

-- -----------------------------------------------------
-- Table 'mensagero'.'usuario'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'mensagero'.'usuario' (
'id_usuario' INT(11) NOT NULL AUTO_INCREMENT,
'nom_usuario' VARCHAR(45) NOT NULL,
'ape_usuario' VARCHAR(45) NOT NULL,
'fecha_nac_usuario' DATE NULL DEFAULT NULL,
'email_usuario' VARCHAR(60) NOT NULL,
'password_usuario' VARCHAR(100) NOT NULL,
'celular_usuario' DECIMAL(10,0) NULL DEFAULT NULL,
'fecha_creacion_usuario' DATETIME NOT NULL,
'fecha_modificacion_usuario' DATETIME NULL DEFAULT NULL,
'fecha_eliminacion_usuario' DATETIME NULL DEFAULT NULL,
PRIMARY KEY ('id_usuario'))
ENGINE = InnoDB
AUTO_INCREMENT = 22
DEFAULT CHARACTER SET = latin1;

-- -----------------------------------------------------
-- Table 'mensagero'.'usuario_has_usuario'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'mensagero'.'usuario_has_usuario' (
'usuario_id_usuario' INT(11) NOT NULL,
'usuario_id_usuario1' INT(11) NOT NULL,
PRIMARY KEY ('usuario_id_usuario', 'usuario_id_usuario1'),
INDEX 'fk_usuario_has_usuario_usuario2_idx' ('usuario_id_usuario1' ASC),
INDEX 'fk_usuario_has_usuario_usuario1_idx' ('usuario_id_usuario' ASC),
CONSTRAINT 'fk_usuario_has_usuario_usuario1'
FOREIGN KEY ('usuario_id_usuario')
REFERENCES 'mensagero'.'usuario' ('id_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'fk_usuario_has_usuario_usuario2'
FOREIGN KEY ('usuario_id_usuario1')
REFERENCES 'mensagero'.'usuario' ('id_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

-- -----------------------------------------------------
-- Table 'mensagero'.'mensaje'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'mensagero'.'mensaje' (
'mensaje_id' INT(11) NOT NULL AUTO_INCREMENT,
'mensaje' VARCHAR(1000) NOT NULL,
'fecha_mensaje' DATETIME NOT NULL,
'usuario_has_usuario_usuario_id_usuario' INT(11) NOT NULL,
'usuario_has_usuario_usuario_id_usuario1' INT(11) NOT NULL,
PRIMARY KEY ('mensaje_id'),
INDEX 'fk_mensaje_usuario_has_usuario1_idx' ('usuario_has_usuario_usuario_id_usuario' ASC, 'usuario_has_usuario_usuario_id_usuario1' ASC),
CONSTRAINT 'fk_mensaje_usuario_has_usuario1'
FOREIGN KEY ('usuario_has_usuario_usuario_id_usuario' , 'usuario_has_usuario_usuario_id_usuario1')
REFERENCES 'mensagero'.'usuario_has_usuario' ('usuario_id_usuario' , 'usuario_id_usuario1')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = latin1;

-- -----------------------------------------------------
-- Table 'mensagero'.'publicacion'
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS 'mensagero'.'publicacion' (
'id_publicacion' INT(11) NOT NULL AUTO_INCREMENT,
'mensaje_publicacion' VARCHAR(20000) NOT NULL,
'fecha_publicacion' DATETIME NOT NULL,
'usuario_id_usuario' INT(11) NOT NULL,
PRIMARY KEY ('id_publicacion'),
INDEX 'fk_publicacion_usuario1_idx' ('usuario_id_usuario' ASC),
CONSTRAINT 'fk_publicacion_usuario1'
FOREIGN KEY ('usuario_id_usuario')
REFERENCES 'mensagero'.'usuario' ('id_usuario')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARACTER SET = latin1;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

use mensagero;
insert into usuario values ('1','jesus','Huancas','','[email protected]','123','960321093',now(),now(),now());
insert into usuario values ('2','jhon','Cordova','','[email protected]','123456','960321093',now(),now(),now());
insert into usuario values ('3','ana','Vazques','','[email protected]','321','960321094',now(),now(),now());
insert into usuario_has_usuario values ('1','2');
insert into usuario_has_usuario values ('1','3');
insert into mensaje values ('1','Hola que tal como estas',now(),'1','2')
insert into mensaje values ('2','Hola estas bien',now(),'1','3')

SELECT 
l.MENSAJE_id,
l.MENSAJE,
l.FECHA_MENSAJE ,
l.usuario_has_usuario_usuario_id_usuario,
l.usuario_has_usuario_usuario_id_usuario1,
r.nom_usuario,
s.nom_usuario
FROM mensaje l
INNER JOIN USUARIO_has_usuario p ON p.usuario_ID_USUARIO = l.usuario_has_usuario_usuario_id_usuario
INNER JOIN USUARIO r ON r.ID_USUARIO = p.usuario_ID_USUARIO
INNER JOIN USUARIO_has_usuario q ON q.usuario_ID_USUARIO1 = l.usuario_has_usuario_usuario_id_usuario1 
INNER JOIN USUARIO s ON s.ID_USUARIO = q.usuario_ID_USUARIO1
    
asked by Ayrton Axel 08.05.2018 в 20:19
source

1 answer

0

Try selecting Distinct values so it will not bring you repeated fields if that's what you mean SELECT DISTINCT l.MENSAJE_id, l.MENSAJE, l.FECHA_MENSAJE , l.usuario_has_usuario_usuario_id_usuario, l.usuario_has_usuario_usuario_id_usuario1, r.nom_usuario, s.nom_usuario FROM mensaje l INNER JOIN USUARIO_has_usuario p ON p.usuario_ID_USUARIO = l.usuario_has_usuario_usuario_id_usuario INNER JOIN USUARIO r ON r.ID_USUARIO = p.usuario_ID_USUARIO INNER JOIN USUARIO_has_usuario q ON q.usuario_ID_USUARIO1 = l.usuario_has_usuario_usuario_id_usuario1 INNER JOIN USUARIO s ON s.ID_USUARIO = q.usuario_ID_USUARIO1

    
answered by 08.05.2018 / 21:08
source