como jalar datos fuera de un JOIN en MySQL [SOLUCIONADO]

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
greer
Forista Medio
Forista Medio
Mensajes: 334
Registrado: Mar Feb 27, 2007 8:00 am
Ubicación: PANAMA

como jalar datos fuera de un JOIN en MySQL [SOLUCIONADO]

Mensaje por greer » Vie Feb 25, 2011 8:57 pm

Hola que tal compañeros,

la presente es para solicitar ayuda sobre una consulta, que no se si sea posible, les cuentos...

tengo tres tablas en una base de datos mysql, tabla 1 (tabla principal) tabla 1-2 (tabla que sirve de union entre la 1 y la 2) y tabla 2 (tabla secundaria)

el punto es que necesito jalar TODOS los datos de la tabla 1 y si hay datos en la tabla 2 que esten relacionado, tambien jalarlos.

pero al momento de hacer mi consulta para poder relacionar las dos tablas uso un JOIN pero al momento de hacer eso, solo me jala los datos relacionados (tabla 1-2)

y los datos de la tabla 1 no me los jala todos, bueno los que no tiene relacion con la tabla 2.

Les pongo la consulta que tengo hecha:

Código: Seleccionar todo

	$query_1 = "SELECT
			a.Name,
			ifc.nro_factura_c,
			ifc.fecha_factura_c,
			ifc.total_c,
			ifc.moneda_factura_c,
			ic.name,
			ic.amount,
			icc.moneda_c
		FROM
			infor_cobranza ic,
			accounts a,
			infor_facturacion_cstm ifc
				RIGHT OUTER JOIN infor_factufor_cobranza_c ifcc
				ON ifcc.infor_factcf57uracion_ida = ifc.id_c
				RIGHT OUTER JOIN infor_cobranza_cstm icc
				ON ifcc.infor_factc913obranza_idb = icc.id_c
				AND ifcc.deleted = 0
		WHERE
			a.id = ifc.account_id_c
			AND a.id = icc.account_id_c
			AND ic.id = icc.id_c
			AND ifc.fecha_factura_c between '$desde' and '$hasta' ORDER BY a.Name, ifc.nro_factura_c";
Si alguien tiene una dia se lo voy agradecer.

Saludos.
Última edición por greer el Mar Mar 01, 2011 9:02 pm, editado 1 vez en total.
http://greermurray.com
Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1520
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.
Contactar:

Re: como jalar datos fuera de un JOIN en MySQL

Mensaje por maiku » Sab Feb 26, 2011 7:36 am

O_o hum.... que pasaría si en vez de ser right outer join intentas con left aouter join?

Código: Seleccionar todo

            ..........
            LEFT OUTER JOIN infor_factufor_cobranza_c ifcc
            ON ifcc.infor_factcf57uracion_ida = ifc.id_c
            LEFT OUTER JOIN infor_cobranza_cstm icc
            ON ifcc.infor_factc913obranza_idb = icc.id_c
            AND ifcc.deleted = 0
            ..........
no sé, se me ocurre, hay que probar, puesto que no es lo mismo en este caso right contra left.

Saludetes :D
Grüße...
Maiku

Full linux alchemist!!!
Avatar de Usuario
greer
Forista Medio
Forista Medio
Mensajes: 334
Registrado: Mar Feb 27, 2007 8:00 am
Ubicación: PANAMA

Re: como jalar datos fuera de un JOIN en MySQL

Mensaje por greer » Mar Mar 01, 2011 6:51 am

Hola que tal ?

maiku grqacias por responder! te lo agradesco,

...te cuento busque en google, lei un unos cuantos manulaes de MySQL y di con mi problema. tenia que hacer una Sub-consulta
aca dejo como quedo:

Código: Seleccionar todo

	$query = "SELECT
			sub.Name,
			sub.nro_factura_c,
			sub.fecha_factura_c,
			sub.total_c,
			sub.moneda_factura_c,
			sub.numero_recibo,
			sub.amount,
			sub.moneda_recibo
		FROM (
			SELECT
				a.Name,
				ifc.nro_factura_c,
				ifc.fecha_factura_c,
				ifc.total_c,
				ifc.moneda_factura_c,
				ic.name AS numero_recibo,
				ic.amount,
				icc.moneda_c AS moneda_recibo
			FROM
				infor_cobranza ic,
				accounts a,
				infor_facturacion_cstm ifc
					RIGHT OUTER JOIN infor_factufor_cobranza_c ifcc
					ON ifcc.infor_factcf57uracion_ida = ifc.id_c
					LEFT OUTER JOIN infor_cobranza_cstm icc
					ON ifcc.infor_factc913obranza_idb = icc.id_c
					AND ifcc.deleted = 0
			WHERE
				a.id = ifc.account_id_c
				AND a.id = icc.account_id_c
				AND ic.id = icc.id_c
				AND ifc.fecha_factura_c between '$desde' and '$hasta'
		UNION
			SELECT
				a.Name,
				ifc.nro_factura_c,
				ifc.fecha_factura_c,
				ifc.total_c,
				ifc.moneda_factura_c,
				ifc.cliente_fac_copia_c,
				ifc.consumofinal_c,
				ifc.rut_c
			FROM
				accounts a,
				infor_facturacion_cstm ifc
			WHERE
				a.id = ifc.account_id_c
				AND ifc.fecha_factura_c between '$desde' and '$hasta'

		) AS sub GROUP BY sub.nro_factura_c";
Saludos.
http://greermurray.com
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje