Ich stecke mit diesem Fall, es ist über zwei Tabellen verbinden und Multi-Record zurückgeben.MySQL Join Multi-Datensatz von einem Feld
Nehmen wir an, dass ich habe zwei Tabellen wie folgt aus:
Tabelle Produkt:
+----+-----------+-----------+
| id | name | media_id |
+----+-----------+-----------+
| 1 + product 1 + 32,33,34 +
+----+-----------+-----------+
media_id(VARCHAR(50))
Tabelle Medien:
+----+-----------+------------------------------------------+
| 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 +
+----+-----------+------------------------------------------+
I JOIN
mit WHERE IN
Klausel zu verwenden versucht:
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);
und andere JOIN
Klausel aber das Rückergebnis ist:
+----+-----------+-----------+------------+-------------------------+
| id | name | image_id | media_name + path +
+----+-----------+-----------+------------+-------------------------+
| 1 + product 1 + 32,33,34 + media 2 + uploads/image/image_1 +
+----+-----------+-----------+------------+-------------------------+
Was ich will, ist das Rückergebnis haben 3 Datensätze wie folgt aus:
+----+-----------+-----------+------------+-----------------------+
| 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 +
+----+-----------+-----------+------------+-----------------------+
Wer weiß, wie Tabelle wie folgt zu verbinden?
Korrigieren Sie Ihr Schema. Siehe Normalisierung. – Strawberry
@Strawberry Ich verstehe das normale Schema von image_id ist 'int', und ich kann mehr Spalten wie' image_id_2', 'image_id_3',' image_id_4' machen. Aber in meinem Fall muss ich die 'image_id' Spalte in' VARCHAR' ändern. –
Es ist klar, dass du es nicht verstehst. Aber verzweifle nicht. Die Grundprinzipien der Normalisierung sind eigentlich ziemlich einfach zu verstehen (ich habe es immerhin verstanden!). – Strawberry