I have this SQL statement:
SELECT
Datos_Propiedad,
Datos_Primer_Vendedor AS Datos_Primer_Vendedor,
Datos_Primer_Comprador AS Datos_Primer_Comprador,
Datos_Segundo_Vendedor AS Datos_Segundo_Vendedor,
Datos_Segundo_Comprador AS Datos_Segundo_Comprador
FROM (
SELECT
CASE
WHEN v.Placa IS NOT NULL THEN
CONCAT('Vehículo: ', v.marca, ' ', v.modelo, ', Placa: ', v.Placa)
WHEN i.Direccion_exacta IS NOT NULL THEN
CONCAT('Inmueble: ', i.Tipo, ', Dirección: ', i.Direccion_exacta)
END AS Datos_Propiedad,
CONCAT(p1.primer_nombre, ' ', p1.primer_apellido) AS Datos_Primer_Vendedor,
CONCAT(p2.primer_nombre, ' ', p2.primer_apellido) AS Datos_Primer_Comprador,
CONCAT(p3.primer_nombre, ' ', p3.primer_apellido) AS Datos_Segundo_Vendedor,
CONCAT(p4.primer_nombre, ' ', p4.primer_apellido) AS Datos_Segundo_Comprador
FROM documento d
LEFT JOIN vehiculo v ON d.Placa = v.Placa
LEFT JOIN inmueble i ON d.Direccion_exacta = i.Direccion_exacta
JOIN registrada r1 ON d.Folio_inicial = r1.Folio_inicial AND d.Numero_libro = r1.Numero_libro
JOIN persona p1 ON r1.DNI_NIE = p1.DNI_NIE
JOIN tipopersona tp1 ON r1.ID_TipoPersona = tp1.ID_TipoPersona AND tp1.nombre_TipoPersona = 'Vendedor'
JOIN registrada r2 ON d.Folio_inicial = r2.Folio_inicial AND d.Numero_libro = r2.Numero_libro
JOIN persona p2 ON r2.DNI_NIE = p2.DNI_NIE
JOIN tipopersona tp2 ON r2.ID_TipoPersona = tp2.ID_TipoPersona AND tp2.nombre_TipoPersona = 'Comprador'
JOIN registrada r3 ON d.Folio_inicial = r3.Folio_inicial AND d.Numero_libro = r3.Numero_libro
JOIN persona p3 ON r3.DNI_NIE = p3.DNI_NIE
JOIN tipopersona tp3 ON r3.ID_TipoPersona = tp3.ID_TipoPersona AND tp3.nombre_TipoPersona = 'Vendedor'
JOIN registrada r4 ON d.Folio_inicial = r4.Folio_inicial AND d.Numero_libro = r4.Numero_libro
JOIN persona p4 ON r4.DNI_NIE = p4.DNI_NIE
JOIN tipopersona tp4 ON r4.ID_TipoPersona = tp4.ID_TipoPersona AND tp4.nombre_TipoPersona = 'Comprador'
WHERE (d.Placa IN (
SELECT Placa FROM documento
GROUP BY Placa
HAVING COUNT(*) >= 2
) OR d.Direccion_exacta IN (
SELECT Direccion_exacta FROM documento
GROUP BY Direccion_exacta
HAVING COUNT(*) >= 2
))
) AS resultados;
This is what I got from its execution:
But I want this result:
What MySQL functions could help me obtain a result like that?
What I basically need is two rows with two buyers and two sellers. I think there must be a aggregation or subquery to obtain something what I’m showing in the second image.