J'ai un peu affaire à une base de données existante, et j'ai de la difficulté à écrire une requête de recherche. Les deux tableaux concernés sont products
et tours
(multiple par produit).MySQL concaténer à la colonne tout en sélectionnant
Ma requête générale ressemble à ceci:
SELECT products.*, tours.* FROM products INNER JOIN tours
ON products.id=tours.product_id
GROUP BY products.id
Maintenant, voici la partie où je vais avoir du mal. La table products
contient une colonne, countries
, qui est une liste des ID de pays séparés par des tuyaux, comme suit: 13|45|33|29|133|337
. Je dois retourner une liste de products
qui ont, par exemple, le pays 33
.
Pour simplifier, je pourrais faire where products.countries LIKE '%33%'
, mais cela retournerait également 133
et 337
. Je vais devoir utiliser where products.countries LIKE '%|33|%'
, mais cela ne correspondra pas s'ils sont en premier ou en dernier. Par conséquent, je dois ajouter un tuyau à chaque extrémité de la valeur de la colonne lors de la sélection, ce qui me laisse quelque chose comme:
SELECT products.*, tours.*, CONCAT("|",products.countries,"|") AS country_list
FROM products INNER JOIN tours ON products.id=tours.product_id
GROUP BY products.id
Mais si je tente d'ajouter WHERE country_list LIKE '|%33%|'
, je reçois une erreur "undefined index: country_list"
..
Qu'est-ce que je fais mal ici?
try WHERE products.countries LIKE '% 33%', – helle
@helle qui correspondrait également '133' et' 337', ce qui est incorrect – Jeriko