Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda