Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con consulta a dos tablas

Estas en el tema de Duda con consulta a dos tablas en el foro de Mysql en Foros del Web. Buenas tardes, tengo la siguiente consulta: Cita: SELECT clientes.idCliente AS idCliente,clientes.empresa AS empresa,clientes.direccion AS direccion,clientes.cp AS cp,clientes.municipio AS municipio,clientes.estado AS estado,clientes.pais AS pais,clientes.correo AS correo,clientes.telfax ...
  #1 (permalink)  
Antiguo 08/07/2011, 14:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años
Puntos: 2
Pregunta Duda con consulta a dos tablas

Buenas tardes, tengo la siguiente consulta:
Cita:
SELECT clientes.idCliente AS idCliente,clientes.empresa AS empresa,clientes.direccion AS direccion,clientes.cp AS cp,clientes.municipio AS municipio,clientes.estado AS estado,clientes.pais AS pais,clientes.correo AS correo,clientes.telfax AS telfax,clientes.nombre_contacto AS contacto,clientes.observaciones AS obs,facturacion.idFacturacion AS idFacturacion,facturacion.razon_social AS razon,facturacion.rfc AS rfc,facturacion.calle AS calle,facturacion.num_ext AS numext,facturacion.num_int AS numint,facturacion.colonia AS colonia,facturacion.cp AS cpfact,facturacion.municipio AS municipiofact,facturacion.estado AS estadofact,facturacion.pais AS paisfact FROM clientes,facturacion WHERE clientes.idCliente = $id AND facturacion.idCliente = $id
Realizo la consulta a dos tablas y me trae la info correctamente, pero el problema es cuando en la tabla facturacion no tiene datos relacionados para un cliente, la consulta no arroja resultados, como puedo evitar que falle, tendria que separar las consultas o que podria hacer. Saludos
  #2 (permalink)  
Antiguo 08/07/2011, 15:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con consulta a dos tablas

- No puedes usar la coma (o INNER JOIN) si quieres obtener incluso los que no tienen facturación.
- Hacer la comparación del ID como estabas haciendo esta mal, te dará un resultado muy ineficiente.
- Si un alias será igual al nombre del campo, no tiene sentido ponerlo.
- Usa alias para la stablas. Te resultará más fácil de escribir y cometerás menso errores.
- Trata de escribir las consultas más estructuradamente, de modo que sean más fáciles de leer a simple vista.
Código MySQL:
Ver original
  1.     C.idCliente,
  2.     C.empresa,
  3.     C.direccion,
  4.     C.cp,
  5.     C.municipio,
  6.     C.estado,
  7.     C.pais,
  8.     C.correo,
  9.     C.telfax,
  10.     C.nombre_contacto contacto,
  11.     C.observaciones obs,
  12.     F.idFacturacion,
  13.     F.razon_social razon,
  14.     F.rfc,
  15.     F.calle,
  16.     F.num_ext numext,
  17.     F.num_int  numint,
  18.     F.colonia,
  19.     F.cp cpfact,
  20.     F.municipio municipiofact,
  21.     F.estado estadofact,
  22.     F.pais paisfact
  23. FROM clientes C LEFT JOIN facturacion F ON C.idCliente = F.idCliente
  24. WHERE C.idCliente = $id OR F.idCliente IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:38.