web-dev-qa-db-fra.com

Jointure SQL sur une colonne COMME une autre colonne

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.

19
Don P

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 + '%'
38
colin-higgins

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.

19
fthiella