Ce que j'ai: La structure suivante:
table_zero
-> id (PRIMAIRE avec incrémentation automatique)
-> autre
table_1
-> id (clé étrangère pour id table zéro)
-> varchar (80) Exemple de valeur: (aahellobbb)
-> one_field
table_2
-> id (clé étrangère pour id table zéro)
-> varchar (160) Exemple de valeur: (aaececehellobbb)
-> autre_champ
Ce que je veux: Recherchez et obtenez un tableau (id, varchar) contenant toutes les correspondances avec LIKE '% str%' sur le champ varchar. Par exemple, si je recherche avec la chaîne "hello", je devrais obtenir les deux valeurs d'exemple avec leurs identifiants respectifs. Ces identifiants seront toujours différents, car ils font référence à une CLÉ PRIMAIRE.
Ce que j'ai essayé: J'ai essayé avec UNION ALL mais cela ne fonctionne pas avec LIMITS dans mon exemple.
En utilisant UNION
, vous pouvez obtenir plusieurs fois des lignes avec le même ID. Qu'en est-il de l'utilisation de LEFT JOIN
?
Si j'ai compris votre question:
SELECT table_zero.id, table_1.varchar_field, table_2.varchar_field
FROM table_zero
LEFT JOIN table_1 ON table_zero.id = table_1.id
LEFT JOIN table_2 ON table_zero.id = table_2.id
WHERE table_1.varchar_field LIKE '%str%'
OR table_2.varchar_field LIKE '%str%'
SELECT table_zero.id, table_1.varchar_field, table_2.varchar_field
FROM table_zero
LEFT JOIN table_1 ON table_zero.id = table_1.id
LEFT JOIN table_2 ON table_zero.id = table_2.id
WHERE table_1.varchar_field LIKE '%str%'
OR table_2.varchar_field LIKE '%str%'
Essaye ça
SELECT *
FROM
(
SELECT table_zero.id AS ID, table_1.varchar_field AS field
FROM table_zero
JOIN table_1 ON table_zero.id = table_1.id
WHERE table_1.varchar_field LIKE '%str%'
UNION
SELECT table_zero.id, table_2.varchar_field AS field
FROM table_zero
JOIN table_2 ON table_zero.id = table_2.id
) tbl
WHERE
tbl.field LIKE '%str%'