Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   ¿Cómo hacer un JOIN con la misma tabla? (https://www.clubdelphi.com/foros/showthread.php?t=95620)

MAXIUM 20-03-2022 20:42:31

¿Cómo hacer un JOIN con la misma tabla?
 
Hola que tal, aquí fastidiando de nuevo.

La verdad es que me cuesta expresar mis ideas, así que trataré de ser lo más básico posible.

Tengo esta tabla
Código:

CABINA  |TIPO|ESTADO|
--------|----|------|
CABINA01|A  |OK    |
CABINA01|B  |LISTO |
CABINA02|B  |OK    |
CABINA02|A  |OK    |
CABINA03|A  |LISTO |
CABINA03|B  |OK    |
CABINA04|B  |OK    |
CABINA04|A  |LISTO |
CABINA05|A  |OK    |
CABINA05|B  |OK    |
CABINA06|B  |LISTO |
CABINA06|A  |OK    |
CABINA07|A  |OK    |
CABINA07|B  |LISTO |
CABINA08|B  |OK    |
CABINA08|A  |LISTO |
CABINA09|B  |OK    |
CABINA09|A  |OK    |
CABINA10|B  |LISTO |
CABINA10|A  |OK    |

Quiero hacer una consulta que me arroje el resultado de este modo
Código:

CABINA  |TIPO|ESTADO|TIPO|ESTADO|
--------|----|------|----|------|
CABINA01|A  |OK    |B  |LISTO |
CABINA02|B  |OK    |A  |OK    |
CABINA03|A  |LISTO |B  |OK    |
CABINA04|B  |OK    |A  |LISTO |
CABINA05|A  |OK    |B  |OK    |
CABINA06|B  |LISTO |A  |OK    |
CABINA07|A  |OK    |B  |LISTO |
CABINA08|B  |OK    |A  |LISTO |
CABINA09|B  |OK    |A  |OK    |
CABINA10|B  |LISTO |A  |OK    |

Aún que quedará mejor de este otro modo
Código:

CABINA  |TIPO|ESTADO|TIPO|ESTADO|
--------|----|------|----|------|
CABINA01|A  |OK    |B  |LISTO |
CABINA02|A  |OK    |B  |OK    |
CABINA03|A  |LISTO |B  |OK    |
CABINA04|A  |LISTO |B  |OK    |
CABINA05|A  |OK    |B  |OK    |
CABINA06|A  |OK    |B  |LISTO |
CABINA07|A  |OK    |B  |LISTO |
CABINA08|A  |LISTO |B  |OK    |
CABINA09|A  |OK    |B  |OK    |
CABINA10|A  |OK    |B  |LISTO |

Nota 1: Pueden existir mucho más cabinas, pero todas vienen así. En pares.
Nota 2: Tipo solo puede ser A o B.
Nota 3: Pueden haber más estados.

Puse JOIN en el titulo solo porque intuyo que la consulta debe incluirlo :o

Gracias como siempre

MAXIUM 20-03-2022 21:09:36

Creo que lo conseguí :p

Código SQL [-]
SELECT P1.*, P2.*
FROM PRUEBA P1
LEFT JOIN PRUEBA P2 
ON P1.CABINA = P2.CABINA
WHERE P1.TIPO <> 'B' AND P2.TIPO <> 'A'
ORDER BY P1.CABINA;

De todos modos agradecería qué revisaran mi sentencia :rolleyes:

ElKurgan 22-03-2022 06:55:47

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 02:09:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi