Ho fatto una domanda ieri su come estrarre più risultati in un campo e mi è stata data la risposta GROUP_CONTACT()
.GROUP_CONCAT tirando fuori risultato vuoto con delimitatori
Ho inserito questo codice nel mio codice e funziona correttamente. Ho bisogno di fare questo per due campi e quindi ho iniziato a usarlo due volte nella stessa istruzione sql. Sfortunatamente, sta tirando indietro una lista vuota per il secondo campo con virgole e non sono sicuro del perché.
Ecco il mio dati di esempio:
pid || prod
1 || top
2 || sweater
Ecco i miei dati di esempio stock (brodo non ha due dimensioni ad esempio vita e al torace):
sid || size1 || size2 || pid
1 || M || || 1
2 || L || || 1
3 || XL || || 1
4 || L || || 2
5 || XL || || 2
Ecco il mio codice :
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
Questo è quello che dovrebbe mettere in evidenza:
pid || size1 || size2 || prod
1 || M,L,XL || || top
2 || L,XL || || sweater
Questo è quello che è in realtà portando fuori:
pid || size1 || size2 || prod
1 || M,L,XL || ,, || top
2 || L,XL || , || sweater
Ho controllato per vedere se c'è uno spazio o qualsiasi cosa in size2 e non c'è niente lì dentro.
ho fatto questa domanda e il prodotto è tornato come mi aspettavo:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 = ""
Quando ho fatto questa domanda, non è tornato:
SELECT size1, size2 FROM stock WHERE pid = 1 AND size2 IS NULL
so GROUP_CONCAT()
ignorerà risultati NULL ma io è necessario fare qualcosa per fermare GROUP_CONTACT()
da mostrare un elenco delimitato da virgola vuota quando è solo ""
anziché NULL
.