7
votes

Mysql si en groupe_concat pause

Je fais un SQL assez gros afin que je présente des excuses que je ne peux pas fournir un grand exemple de mes tables.

if( 'network' IN ( concat('\'',
                   GROUP_CONCAT(DISTINCT services.service_code
                                SEPARATOR '\', \'' ),
                   '\'') ), 'Yes','No')


0 commentaires

4 Réponses :


1
votes

group_concat ne fonctionne pas comme ceci, la requête après le groupe_concat ressemble à ceci: xxx

et pour que cela fonctionne, il faudrait ressembler à ceci : xxx

au lieu de la place, essayez d'étudier le groupe_concat: (Notez le réseau xxx

Si cela ne fonctionne pas, essayez-le avec une sous-sélection: xxx

bien que ce soit beaucoup plus lent.


1 commentaires

Si ("Réseau" dans (Group_Concat (SERVICE DE SERVICE DISTRICT.SERVICE_CODE '\', \ '')), 'JA', 'Nej') devrait renvoyer une liste qui ressemble à group_concat ('1', '2', '3', '4') , ressent de cette façon de toute façon. Mais ça ne marche pas. Omettre que le groupe_concat ne fonctionne que si 'Network' est le Service_Code présent sur la ligne de regroupement de messagerie instantanée et je ne peux pas faire commander par service_code. Un inconvénient des réseaux brise le SQL. Et je n'ai pas la possibilité d'utiliser une sous-requête. Merci pour votre réponse.



10
votes

Je suis un gros fan fort> de group_concat code>, mais vous n'exigeez pas group_concat code> dans ce cas

sum( if(services.service_code='network', 1, 0) ) as networkservice


1 commentaires

Merci, jamais pensé à utiliser la somme. Je l'ai utilisé comme ce si (somme (si (service.service_code = 'Network', 1, 0))> 0, 'oui', 'non) comme réseauservice et cela fonctionne bien.



0
votes

utilisera l'aide du code ci-dessous?

IF((GROUP_CONCAT(Direct SEPARATOR ',' ) REGEXP 'Y' ), 'Yes','No') AS Direct


0 commentaires

6
votes

La fonction group_concat code> renvoie une chaîne afin que vous puissiez utiliser wind_in_set code>. Il faut une chaîne séparée par des virgules comme un deuxième argument.

IF(  FIND_IN_SET ('network', GROUP_CONCAT( DISTINCT services.service_code SEPARATOR ',' )  ), 'Yes','No') as networkservice


1 commentaires

J'apprécie fortement cela dans la clause (dans mon cas). ;)