Comunidad de diseño web y desarrollo en internet online

MySQL: LEFT OUTER JOIN exluir resultados repetidos...

Citar            
MensajeEscrito el 03 Ago 2011 12:05 am
Hola muchachada...
Estoy con un tema de MySQL´s...

El tema parece sencillo:
Tengo dos tablas (t_Marcas y t_Products) ambas tienen en común el campo
manufacturerID.
En t_Marcas, el manufacturerID sube a partir de 1 y nunca es 0 (cero).
En t_Product el manufactuerID se corresponde con las marcas, salvo
cuando no tiene marca asignada, en este último caso sí es cero.



Deseo que el resultado de mi consulta me devuelva:
Una sola vez los manufacturerID de t_Marcas que tienen una marca asignada
en t_Products, ignorando las repeticiones y los ceros que haya en t_Products.

Mi consulta:

Código MySQL :

$t_Marcas
SELECT b.name, b.manufacturer_id 
FROM  $t_Marcas b
LEFT OUTER JOIN $t_Products s ON b.manufacturer_id = s.manufacturer_id
WHERE b.manufacturer_id != 0
ORDER BY b.manufacturer_id 


Como dije, no consigo que me excluya las repeticiones de la tabla
t_Products...aunque sí logré que me exluyera los ceros...

En fin, si alguien me da una mano ^^
Saludos!

Por DiegoVelevu

50 de clabLevel



Genero:Masculino  

Buenos Aires

opera
Citar            
MensajeEscrito el 03 Ago 2011 07:59 pm
Qué tal? Probaste el DISTINCT? Como hablás de no traer repetidos, justamente es lo que hace el DISTINCT. La otra que podés hacer es agruparlos por b.manufacturer_id , ahí tampoco te los debería repetir.
Igual no me queda muy claro por qué usás un OUTER en vez de un LEFT JOIN, con OUTER traés todos los de la izquierda + los que no cumplen la condición de igualación, con un LEFT JOIN, sólo te traería los de la izq + los que la cumplan, y por lo tango, ninguno de los 0.

Espero haberte ayudado en algo. Perdoná que no puedo testear nada de lo que te digo! Saludos

Por Arteniz

41 de clabLevel



Genero:Masculino  

Programador

firefox
Citar            
MensajeEscrito el 03 Ago 2011 09:20 pm
En efecto...hice así:

Código MySQL :

SELECT DISTINCT b.manufacturer_id, s.name
FROM  $tProduct b [b](en Product pueden haber muchos registros repetidos)[/b]
INNER JOIN $tBrand s ON b.manufacturer_id = s.manufacturer_id
WHERE b.manufacturer_id > 0  [b](esto sí que me sorprendió)[/b]
ORDER BY b.manufacturer_id


Necesito el INNER JOIN para que relacione los productos con
las marcas...en la tabla de los productos no están los nombres
de las marcas que es lo único que necesito mostrar.

Por DiegoVelevu

50 de clabLevel



Genero:Masculino  

Buenos Aires

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.