Duplicata possible:
requête de jointure mysql utilisant comme?
Je veux faire une jointure où une colonne contient une chaîne de la colonne d'une autre table:
SELECT
a.first_name,
b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%a.first_name%'
Est-ce possible? J'utilise MySQL. Bien sûr, la requête ci-dessus ne fonctionnera pas car LIKE '% a.first_name%' recherchera simplement la chaîne a.first_name, et non la valeur réelle de la colonne.
Il vous suffit de concaténer les chaînes, vous pouvez également effectuer une recherche et remplacer.
SELECT
a.first_name,
b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%' + a.first_name + '%'
Vous pouvez utiliser CONCAT:
SELECT
a.first_name,
b.age
FROM
names a JOIN ages b
ON b.full_name LIKE CONCAT('%', a.first_name, '%')
ou aussi LOCALISER , qui renvoie la position de la première occurrence de a.first_name
dans b.full_name
:
SELECT
a.first_name,
b.age
FROM
names a JOIN ages b
ON LOCATE(a.first_name, b.full_name)
s'il y a correspondance, la jointure réussira.