Archive

Posts Tagged ‘MySQL Advance’

MySQL truy vấn so sánh giá trị trong vùng 1 tới n

MySQL Advance

Ví dụ: Chúng ta có một yêu cầu bài toán:

Có 2 table lưu trữ ngành nghề & thông tin công ty, làm thế nào lưu trữ  tối ưu CSDL My SQL (lưu trữ ít record, mà vẫn cung cấp đủ thông tin).

table 1: nganhnghe() lưu  thông tên các lĩnh vực ngành nghề

mysql_1

table 2: congty() lưu thông tin công ty & các ngành nghề liên quan
mysql_2

Yêu cầu truy vấn: cho biết có bao nhiêu c.ty ở mỗi ngành (chỉ dùng một câu truy vấn) ?

Chúng ta đặt câu try vấn như sau:

SELECT n.id, n.ten_nganh, COUNT(n.id) AS total_congty
FROM congty AS c, nganhnghe AS n
WHERE c.nganhnghe != '' AND FIND_IN_SET(n.id, c.nganhnghe)
GROUP BY n.id
HAVING COUNT(n.id)

// Lúc này xuất ra kết quả
mysql_3
- Các bạn tham khảo thêm function FIND_IN_SET tại trang web của MySQL:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

 

PHP Developer
nhantam

Advertisements

MySQL lấy những thành viên chưa mua sản phẩm nào (LEFT JOIN)

ví dụ ta có 2 bảng dữ  liệu

member()
memID    Name
  1       Nguyen
    2      Tran
    3      Ly

order_product()
ID  memID  product
1     1                  sp1
2     3                 sp2

 

Yêu cầu: truy vấn lấy ra member chưa mua sản phẩm nào. Tối ưu câu truy cấn MySQL với LEFT JOIN

SELECT  member.FROM   member LEFT  JOIN order_product 
ON     member.memberID= order_product.memberID 
WHERE   order_product.memberID IS NULL;

//output
memID    Name
      2      Tran

Categories: MySQL Tags: ,