SQL - 3 LEFTS JOINS

   
Vista:

3 LEFTS JOINS

Publicado por Sergi (7 intervenciones) el 26/01/2011 14:13:48
Hola Foreros,

Me indica access "error de sintaxis en la Operacion Join". Creo que es cosa de parentesis...alguien ve como van los parentesis o sintaxis al hacer 3 left join


SELECT vehicle.matricula, Sum(consum.consum) AS total_consum, vehicle.marca_model, Vehicle.data_aprovacio_baixa, Renting.Data_devolució_vehicle, vehicle.es_propi, Vehicle.Codi_Tipus, Vehicle.Codi_Carburant, Vehicle.Comentari, Vehicle.Codi_detall_organic, asseguranca.numero_polissa

FROM (vehicle LEFT JOIN consum ON Vehicle.Codi_Vehicle = Consum.Codi_Vehicle)

LEFT JOIN ( renting ON renting.codi_vehicle =vehicle.codi_vehicle)

LEFT JOIN (asseguranca ON asseguranca.codi_vehicle=vehicle.codi_vehicle)

WHERE (vehicle.data_aprovacio_baixa IS NULL) AND (renting.data_devolució_vehicle) IS NULL

GROUP BY Vehicle.Matricula, Vehicle.Marca_Model, vehicle.data_aprovacio_baixa, Renting.Data_devolució_vehicle, vehicle.es_propi, Vehicle.Codi_Tipus, Vehicle.Codi_Carburant, Vehicle.Comentari, Vehicle.Codi_detall_organic, asseguranca.numero_polissa

ORDER BY sum(consum.consum) DESC;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE: 3 LEFTS JOINS

Publicado por Leonardo Josué (877 intervenciones) el 26/01/2011 16:45:02
Hola Sergi,

Checa está página donde se explica la sintaxis para la anidación de JOINS en access

http://office.microsoft.com/es-es/access-help/operacion-inner-join-HA001231487.aspx

Creo que debería quedar más o menos así:

SELECT vehicle.matricula, Sum(consum.consum) AS total_consum, vehicle.marca_model, Vehicle.data_aprovacio_baixa, Renting.Data_devolució_vehicle, vehicle.es_propi, Vehicle.Codi_Tipus, Vehicle.Codi_Carburant, Vehicle.Comentari, Vehicle.Codi_detall_organic, asseguranca.numero_polissa
FROM
((vehicle LEFT JOIN consum ON vehicle.Codi_Vehicle = consum.Codi_Vehicle)
LEFT JOIN renting ON renting.codi_vehicle = vehicle.codi_vehicle)
LEFT JOIN asseguranca ON asseguranca.codi_vehicle = vehicle.codi_vehicle
WHERE vehicle.data_aprovacio_baixa IS NULL AND renting.data_devolució_vehicle IS NULL
GROUP BY vehicle.matricula, vehicle.marca_Model, vehicle.data_aprovacio_baixa, renting.Data_devolució_vehicle, vehicle.es_propi, Vehicle.Codi_Tipus, Vehicle.Codi_Carburant, Vehicle.Comentari, Vehicle.Codi_detall_organic, asseguranca.numero_polissa
ORDER BY sum(consum.consum) DESC;

Como podrás ver eliminé los paréntesis que tenías en la sección WHERE de tu consulta, ya que sinceramente no servían para agrupar nada.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: 3 LEFTS JOINS

Publicado por Sergi  (7 intervenciones) el 01/02/2011 22:20:14
Hola Leo,

Pues muchas gracias. estás hecho un fenómeno. a ver la consulta ahora no me da error ninguno y filtra por lo que yo quiero.

De todos modos, esta cláusula AND dentro del where yo la entiendo que tiene que ser un OR, porque en realidad quiero que me dé si se cumple una condición o la otra no las dos a la vez. Lo que pasa que probé el OR y no me daba nada. Luego puse el AND y funcionó. misterios de la informática.

Te agradezco un montón tu rapidez y tu altruismo. De verdad.

Sergi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: 3 LEFTS JOINS

Publicado por VIVIANA (2 intervenciones) el 16/03/2011 20:03:42
hola, tengo una consulta de este mismo tema; ya que me presenta el error (con access)
por favor ayudarme

Error de sintaxis (falta operador) en la expresión de consulta ''.

oComm.CommandText = " SELECT distinct max(p.consecutivo), p.num_sorteo, t.fecha, p.tipo_ubicacion, " & _
" p.monto_fraccion, p.mtofracc_consolidado, " & _
" p.monto, p.descuento, p.monto_neto, " & _
" r.monto_recibo, r.monto_totconsolidado, r.porcentaje, " & _
" r.realconsolidado, r.presupconsolidado, r.diferenciaconsolidado, " & _
" a.enteros, a.fracciones, a.valor, a.acta " & _
" FROM ((( tblsorteo t " & _
" LEFT JOIN tbldevagenlot a ON a.num_sorteo = t.num_sorteo) " & _
" LEFT JOIN tblfracciones p ON p.num_sorteo = t.num_sorteo) " & _
" LEFT JOIN tblrecibporc r ON r.num_sorteo = t.num_sorteo AND " & _
" ON r.tipo_ubicacion = p.tipo_ubicacion ) " & _
" GROUP BY p.num_sorteo, t.fecha, p.tipo_ubicacion, " & _
" p.monto_fraccion, p.mtofracc_consolidado, " & _
" p.monto, p.descuento, p.monto_neto, r.monto_totconsolidado, r.porcentaje, " & _
" r.monto_recibo, r.realconsolidado, r.presupconsolidado, r.diferenciaconsolidado, " & _
" a.enteros, a.fracciones, a.valor, a.acta " & _
" order by 2,1 desc "
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

RE: 3 LEFTS JOINS

Publicado por xve (238 intervenciones) el 17/03/2011 00:13:06
Hola Viviana, creo que el error lo tienes aqui:
" LEFT JOIN tblrecibporc r ON r.num_sorteo = t.num_sorteo AND " & _
" ON r.tipo_ubicacion = p.tipo_ubicacion ) " & _

Estas dos linas al juntarse quedan:
... t.num_sorteo AND ON r.tipo_ubicacio...

AND OR es incorrecto.

Puede ser este el problema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: 3 LEFTS JOINS

Publicado por vIVIANA (2 intervenciones) el 17/03/2011 14:31:59
Ya le quite el or y le puse solo el and y me dio este error:
La expresión de combinación no está admitida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar