Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!