2011-12-18 33 views
6

tôi phải kiểm tra trong các sản phẩm của tôi tôi đang bán (chủ yếu là chơi game console và trò chơi)lỗi mysql trong truy vấn của tôi

tôi muốn xem những sản phẩm có mà loại và đây là câu hỏi của tôi:

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... 
+------+------+------------+-------------+--------- 

ở đây tôi có một sản phẩm (# 7 - BAD) mà tôi không muốn thấy kể từ khi tôi xóa danh mục,

Tôi không muốn thấy sản phẩm không có danh mục?

+0

Bạn chỉ muốn xem 'products' rằng có một mục phù hợp trong 'products_categories'? Trong trường hợp đó bạn muốn 'INNER JOIN' thay vì' LEFT JOIN'. – grossvogel

Trả lời

8

Các LEFT JOIN lệnh được sử dụng để kết hợp hàng kết hợp rỗng mà là được lưu trữ trong các bảng có liên quan Để tham gia các bảng, bảng tham gia đòi hỏi một trường chung (thường được gọi là khoá ngoại) từ bên trái bảng . Loại tham gia này yêu cầu từ khóa BẬT hoặc SỬ DỤNG.

Ví dụ:

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

Hoặc bạn có thể dùng INNER JOIN:

Các THAM GIA hoặc INNER JOIN lệnh được sử dụng để kết hợp không null phù hợp với hàng được lưu trữ trong liên quan bảng Để tham gia các bảng này, bảng kết nối yêu cầu một trường chung (thường được gọi là khóa ngoài) từ bảng bên trái. Loại tham gia này yêu cầu từ khóa BẬT hoặc SỬ DỤNG.

Ví dụ:

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

Bây giờ, tôi muốn giới thiệu thêm một lá cờ cho sản phẩm không hoạt động hoặc hoạt động, bằng cách này bạn không cần phải loại bỏ các loại cho một sản phẩm nếu nó không hoạt động. Bằng cách này, nếu bạn muốn kích hoạt lại nó, chỉ cần chuyển cờ trở lại 1 hoặc bất kỳ cờ nào bạn sử dụng.

Ví dụ:

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

nhờ mẹo – fred

+0

bạn được chào đón –

+0

BTW, dấu ngoặc đơn quanh mệnh đề BẬT không cần thiết. –