Ayer formulé una pregunta sobre cómo extraer múltiples resultados en un campo y se me dio la respuesta GROUP_CONTACT()
.GROUP_CONCAT sacando resultados vacíos con delimitadores
He puesto esto en mi código y funciona bien. Necesito hacer esto para dos campos y, por lo tanto, ahora he empezado a usarlo dos veces en la misma declaración sql. Desafortunadamente, está retirando una lista vacía para el segundo campo con comas y no estoy muy seguro de por qué.
Aquí es mi datos de producto de muestra:
pid || prod
1 || top
2 || sweater
Aquí es mis datos de ejemplo stock (algunas acciones no tiene dos tamaños, por ejemplo, la cintura y el pecho):
sid || size1 || size2 || pid
1 || M || || 1
2 || L || || 1
3 || XL || || 1
4 || L || || 2
5 || XL || || 2
Aquí está mi código :
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
Esto es lo que debe llevar a cabo:
pid || size1 || size2 || prod
1 || M,L,XL || || top
2 || L,XL || || sweater
Esto es lo que en realidad está llevando a cabo:
pid || size1 || size2 || prod
1 || M,L,XL || ,, || top
2 || L,XL || , || sweater
He comprobado para ver si hay un espacio o nada en tamaño 2 y no hay nada allí.
me hicieron esta consulta y el producto volvió como yo esperaba:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 = ""
Cuando hice esta consulta, nada volvió:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 IS NULL
sé GROUP_CONCAT()
ignorará resultados nulos pero necesita hacer algo para evitar que GROUP_CONTACT()
muestre una lista delimitada por comas vacía cuando es solo ""
en lugar de NULL
.