Je suis bloquant avec cette affaire, il s'agit de rejoindre deux tables et de retourner multi enregistrement.MySQL joindre multi enregistrement par un champ
Supposons que j'ai deux tables comme ceci:
Table produit:
+----+-----------+-----------+
| id | name | media_id |
+----+-----------+-----------+
| 1 + product 1 + 32,33,34 +
+----+-----------+-----------+
media_id(VARCHAR(50))
Tableau médias:
+----+-----------+------------------------------------------+
| id | name | path +
+----+-----------+------------------------------------------+
| 31 + media 1 + localhost://uploads/image/image_1 +
+----+-----------+------------------------------------------+
| 32 + media 2 + localhost://uploads/image/image_2 +
+----+-----------+------------------------------------------+
| 33 + media 3 + localhost://uploads/image/image_3 +
+----+-----------+------------------------------------------+
| 34 + media 4 + localhost://uploads/image/image_4 +
+----+-----------+------------------------------------------+
J'ai essayé d'utiliser JOIN
avec WHERE IN
clause:
SELECT
m.id,
m.name as media_name,
p.name,
p.media_id
FROM
media as m
JOIN product as p
on m.id in (p.media_id);
et d'autres JOIN
clause, mais le résultat de retour est:
+----+-----------+-----------+------------+-------------------------+
| id | name | image_id | media_name + path +
+----+-----------+-----------+------------+-------------------------+
| 1 + product 1 + 32,33,34 + media 2 + uploads/image/image_1 +
+----+-----------+-----------+------------+-------------------------+
Ce que je veux est le résultat de retour ont 3 dossiers comme celui-ci:
+----+-----------+-----------+------------+-----------------------+
| id | name | image_id | media_name + path +
+----+-----------+-----------+------------+-----------------------+
| 1 + product 1 + 32 + media 2 + uploads/image/image_2 +
+----+-----------+-----------+------------+-----------------------+
| 2 + product 1 + 33 + media 3 + uploads/image/image_3 +
+----+-----------+-----------+------------+-----------------------+
| 3 + product 1 + 34 + media 4 + uploads/image/image_4 +
+----+-----------+-----------+------------+-----------------------+
Est-ce que quelqu'un sait comment joindre la table comme ça?
Corrigez votre schéma. Voir la normalisation. – Strawberry
@Strawberry je comprends le schéma normal de image_id est 'int', et je peux faire plus de colonnes comme' image_id_2', 'image_id_3',' image_id_4'. Mais dans mon cas, j'ai besoin de changer la colonne 'image_id' en' VARCHAR' –
Il est clair que vous ne comprenez pas. Mais ne désespérez pas. Les principes de base de la normalisation sont en fait assez faciles à saisir (j'ai réussi à le comprendre, après tout!). – Strawberry