Tengo 3 tablas:
Vehicle: vehicle_id, vehicle_type
1, motorcycle
2, car
3, van
Owners: person_id, vehicle_id, date_bought
1, 1, 2009
1, 2, 2008
2, 3, 2009
2, 1, 2005
Quiero mostrar una lista de todos los vehículos de nombres. Si el person_id = 1
, date_bought
también debe ser devuelto.
Así que pensé que iba a comenzar con esto:
SELECT * FROM vehicles
LEFT JOIN Owners USING (vehicle_id)
que devuelve esto:
1, 1, motorcycle, 2009
1, 2, car, 2008
2, 3, van, 2009
2, 1, motorcycle, 2005
Sin embargo, ahora me pueden reducir esto a el resultado necesario. Si yo uso DISTINCT(car_id)
, no hay ningún cambio, como ya estoy eligiendo distintas coche ids antes de la combinación; sólo son no-diferentes después de la combinación. Si yo uso WHERE person_id = 1
, me quito el pasado 2 de las filas y todas las referencias a la furgoneta se ha ido. Si yo uso GROUP BY car_id
, la primera y la última fila se combinan, pero la date_bought
para la motocicleta es elegido arbitrariamente. Lo que yo quiero es este:
1, 1, motorcycle, 2009
1, 2, car, 2008
, 3, van,
Necesito requieren una clara coche id, pero esto sucede antes de la combinación, y así no tiene ningún efecto en absoluto. ¿Cómo puedo obtener la singularidad con la combinación?
- Posibles duplicados de Select distinct registros en una combinación
Deberá incluir la restricción de identificación de la persona en su combinación y el uso de una combinación externa. Las combinaciones externas se utilizan cuando se desea que la información de retorno, incluso si no hay registros en la tabla que se va a unir a la. Trate de
Esto debe devolver lo que se ha incluido como salida esperada:
Ser conscientes de que debido a la izquierda se unan, los PROPIETARIOS de las columnas devuelve NULL si no hay ninguna coincidencia
vehicle_id
en los PROPIETARIOS de la tabla.