Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
Cómo obtener un registro adicional para LEFT JOIN para representar un registro no incluido en la tabla unida a la izquierda

Tengo una base de datos con dos tablas, una tabla (tiendas) tiene una columna de usuario administrador y la otra un usuario con menos privilegios. Planeo UNIRME A LA IZQUIERDA a la tabla del usuario con menos privilegios. Cuando recupero los datos, los registros para el usuario administrador deben estar en una fila separada y deben tener valores NULOS para la tabla unida a la izquierda seguidos de registros de usuarios con menos privilegios (registros de la tabla unida a la izquierda), si corresponde. Estoy usando MySQL.

He investigado los comandos UNION pero no creo que pueda ayudar. Por favor, vea los resultados a continuación de lo que necesito.

Gracias.

 SELECT * FROM shops LEFT JOIN users USING(shop_id) WHERE shop_id = 1 AND (admin_id = 1 OR user_id = 1); +---------+----------+---------+ | shop_id | admin_id | user_id | +---------+----------+---------+ | 1 | 1 | NULL | <-- Need this one extra record | 1 | 1 | 1 | | 1 | 1 | 2 | | 1 | 1 | 3 | +---------+----------+---------+

Aquí hay una estructura de ejemplo de las bases de datos y algunos datos de muestra:

 CREATE SCHEMA test DEFAULT CHARACTER SET utf8 ; USE test; CREATE TABLE admin( admin_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(admin_id) ); CREATE TABLE shops( shop_id INT NOT NULL AUTO_INCREMENT, admin_id INT NOT NULL, PRIMARY KEY(shop_id), CONSTRAINT fk_shop_admin FOREIGN KEY(admin_id) REFERENCES admin (admin_id) ); CREATE TABLE users( user_id INT NOT NULL AUTO_INCREMENT, shop_id INT NOT NULL, CONSTRAINT fk_user_shop FOREIGN KEY(shop_id) REFERENCES admin (shop_id) ); -- Sample data INSERT INTO admin() VALUES (); INSERT INTO shops(admin_id) VALUES (1); INSERT INTO users(shop_id) VALUES (1),(1),(1);

Diagrama de base de datos

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Creo que necesitas union all :

 select s.shop_id, s.admin_id, null as user_id from shops s where s.shop_id = 1 union all select s.shop_id, s.admin_id, u.user_id from shops s join users u on s.shop_id = u.shop_id where shop_id = 1;
over 4 years ago · Santiago Trujillo Relatório

0

Ponga su where condition en la On clause

 SELECT * FROM shops LEFT JOIN users on shops.shop_id=users.shop_id and (admin_id = 1 OR user_id = 1) WHERE shops.shop_id = 1
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda