2011-12-18 15 views
6

tengo que comprobar en mis productos estoy vendiendo (la mayoría de las consolas de juegos y juegos)mysql error en mi consulta

Quiero ver qué productos tiene qué categorías y este es mi consulta:

select * From products left join products_categories on (product_id=id) ; 
+------+------+------------+-------------+---------- 
| id | name | product_id | category_id | and more 
+------+------+------------+-------------+---------- 
| 4 | Xbox |   4 |   2 | 
| 5 | PS3 |   5 |   2 | 
| 7 | BAD |  NULL |  NULL | 
etc... 
+------+------+------------+-------------+--------- 

aquí tengo un producto (# 7 - MAL) que no quiero ver desde que eliminé la categoría,

¿No deseo ver el producto sin categorías?

+0

Sólo desea ver '' de los productos que tienen una entrada coincidente en 'products_categories'? En ese caso, desea un 'INNER JOIN' en lugar de' LEFT JOIN'. – grossvogel

Respuesta

8

La LEFT JOIN comando se utiliza para combina filas coincidentes nulos, que son almacenan en tablas relacionadas Con el fin de unirse a estas tablas, la tabla de unión requiere un campo común (comúnmente llamado clave externa) de la tabla de la izquierda . Este tipo de unión requiere palabras clave ACTIVADAS o UTILIZADAS.

Ejemplo:

SELECT * 
From products 
LEFT JOIN products_categories ON (product_id=id) 
WHERE product_id IS NOT NULL; 

O puede utilizar en la unión interna:

El comando JOIN o INNER JOIN se utiliza para combina no nulo juego filas que se almacenan en relacionado tablas Para unir estas tablas, la tabla de unión requiere un campo común (comúnmente llamado clave externa) de la tabla de la izquierda. Este tipo de unión requiere palabras clave ACTIVADAS o UTILIZADAS.

Ejemplo:

SELECT * From products INNER JOIN products_categories ON (product_id=id); 

Ahora, yo recomendaría para agregar una marca de producto inactivo o activo, de esta manera no es necesario para eliminar las categorías de producto si está inactivo. De esta forma, si quiere reactivarlo, simplemente cambie la bandera a 1 o al indicador que use.

Ejemplo:

SELECT * 
FROM products 
INNER JOIN products_categories ON (product_id=id) 
WHERE products.is_active = 1; 
+0

gracias por la punta – fred

+0

de nada –

+0

Por cierto, los paréntesis alrededor de la cláusula ON son redundantes. –