J'ai besoin de concaténer une chaîne avec une valeur de champ dans une requête MySQL afin de pouvoir joindre deux tables à gauche.
La table 1 contient une colonne appelée "category_id" avec des valeurs numériques, telles que 61, 78, 94 et autres.
La table deux contient une colonne appelée "requête" qui fait référence à un mécanisme de routage de requête et des valeurs telles que "product_id = 68", "category_id = 74", "constructeur_id = 99", etc.
Ainsi, dans ma requête, il est nécessaire de joindre les tables chaque fois qu'une chaîne concaténée est dérivée d'une chaîne définie et que la valeur de la colonne "category_id" correspond au champ de requête.
Mon instruction SQL est actuellement:
SELECT * FROM tableOne
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' + tableOne.category_id
J'ai essayé d'utiliser le || opérateur au lieu de l'opérateur +, mais toujours pas de chance. Est-il possible de faire cela dans MySQL, ou ai-je sauté le flingue ici?
Avez-vous essayé d'utiliser la fonction concat () ?
ON tableTwo.query = concat('category_id=',tableOne.category_id)
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2 FROM tableOne
LEFT JOIN tableTwo
ON tableTwo.query = query2
Voici une excellente réponse à cela:
SET sql_mode='PIPES_AS_CONCAT';
Trouvez plus ici: https://stackoverflow.com/a/24777235/4120319
Voici le code SQL complet:
SET sql_mode='PIPES_AS_CONCAT';
SELECT * FROM tableOne
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' || tableOne.category_id;
MySQL utilise CONCAT () pour concaténer des chaînes
SELECT * FROM tableOne
LEFT JOIN tableTwo
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)