0
votes

MySQL Exclure tout résultat si group_concat retourne null

S'il s'agit d'une dupe, je m'excuse. Je ne pouvais pas le trouver.

J'ai cette requête convoluée qui frappe 3 tables, et j'ai besoin de comprendre comment exclure tout un résultat si le group_concat comme indique > retourne null (ce qu'il fait souvent). Pour clarifier, si montre apparaît null , je ne veux pas que les données profil pour ce résultat non plus. Je veux que la ligne entière a sauté. xxx

accepter également l'entrée sur la vitesse / l'élégance de la requête globale.


0 commentaires

3 Réponses :


0
votes

probablement il y a un moyen plus efficace de le faire, mais je pense qu'une simple clause où la clause fera l'affaire. XXX


3 commentaires

Vous ne pouvez utiliser que des alias de colonnes dans le groupe par, commander ou avoir des clauses, de sorte que où ... montre ... ne fonctionnera pas dev.mysql.com/doc/refman/8.0/fr/problems-with-alias.html


Salut @nacho, es-tu sûr? il me joint que la requête n'utilise que le groupe par une sous-requête


Oui, il n'utilise qu'un groupe par la sous-requête. Ce que j'essaie de dire, c'est que vous ne pouvez pas utiliser d'alias (spectacle est un alias) dans une clause où "standard SQL désalcule des références aux alias de colonne dans une clause où la clause de la colonne. Cette restriction est imposée parce que lorsque la clause de l'endroit est évaluée , la valeur de la colonne n'a pas encore été déterminée



0
votes

Vous pouvez ajouter une clause:

SELECT
  `profiles`.*,
  IF( `profiles`.`profile_id` IN(
    SELECT DISTINCT (`badges`.`profile_id`)
    FROM `badges`
  ), TRUE, FALSE ) AS `has_registrations`,
  (SELECT
    GROUP_CONCAT( DISTINCT `shows`.`show_name` SEPARATOR '<br>' )
    FROM `shows`
    LEFT JOIN `badges` ON `badges`.`show_id` = `shows`.`show_id`
    WHERE
      `badges`.`profile_id` = `profiles`.`profile_id` 
      AND `shows`.`end_date` >= CURDATE()
  ) AS `shows`
FROM `profiles`
having shows is not null


0 commentaires

0
votes

Si je comprends bien les questions correctement, vous n'avez pas besoin de valeurs nulles. Peut-être que la valeur nulle a lieu à l'usage de la join gauche, pourquoi n'essayez-vous pas avec une jointure intérieure que leur ne sera pas une valeur null.


0 commentaires