Tôi đã hỏi một câu hỏi ngày hôm qua về cách kéo ra nhiều kết quả vào một trường và được trả lời GROUP_CONTACT()
.GROUP_CONCAT rút ra kết quả trống với dấu phân tách
Tôi đã đặt mã này vào mã của tôi và nó hoạt động tốt. Tôi cần phải làm điều này cho hai lĩnh vực và do đó tôi đã bắt đầu sử dụng nó hai lần trong cùng một tuyên bố sql. Thật không may, nó kéo trở lại một danh sách trống cho lĩnh vực thứ hai với dấu phẩy và tôi không quá chắc chắn lý do tại sao.
Đây là dữ liệu sản phẩm mẫu của tôi:
pid || prod
1 || top
2 || sweater
Đây là dữ liệu chứng khoán mẫu của tôi (một số cổ phiếu không có hai kích cỡ ví dụ như eo và ngực):
sid || size1 || size2 || pid
1 || M || || 1
2 || L || || 1
3 || XL || || 1
4 || L || || 2
5 || XL || || 2
Đây là mã của tôi :
SELECT p.id, GROUP_CONCAT(s.size1) size1, GROUP_CONCAT(s.size2) size2, p.prod
FROM products p JOIN stock s ON s.prodid = p.id
Đây là những gì cần lưu ý:
pid || size1 || size2 || prod
1 || M,L,XL || || top
2 || L,XL || || sweater
Đây là những gì nó thực sự được đưa ra:
pid || size1 || size2 || prod
1 || M,L,XL || ,, || top
2 || L,XL || , || sweater
Tôi đã kiểm tra để xem nếu có một không gian hoặc bất cứ điều gì trong size2 và không có gì là ở đó.
Tôi đã truy vấn này và các sản phẩm trở lại như tôi mong đợi:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 = ""
Khi tôi truy vấn này, không có gì trở lại:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 IS NULL
Tôi biết GROUP_CONCAT()
sẽ bỏ qua kết quả NULL nhưng tôi cần phải làm điều gì đó để ngăn chặn GROUP_CONTACT()
hiển thị danh sách phân tách bằng dấu phẩy trống khi chỉ là ""
thay vì NULL
.