J'ai 5 tables.
Première products
comme:Sélectionnez parmi 4 tables avec jointures et IN
id | country_ids | category_ids | users_ids
1 | 1,4,6 | 4,5,6,70 | 5,6,9
2 | 5,6,3 | 4,8,2,11 | 1,5,8
Deuxième countries
comme:
c_id | c_name
1 | Åland Islands
2 | Antarctica
...
Troisième categories
comme:
cat_id | cat_name
2 | Small
4 | Large
...
Quatrième table users
comme:
u_id | u_name
1 | David
2 | Mary
...
Et la cinquième table review
(la structure de la table n'est pas importante, compter uniquement les identifiants).
et sql
SELECT a.*, COUNT(b.comm_id) AS comm_count, c.*, d.*, e.* FROM products AS a LEFT JOIN comments AS b ON b.comm_prod_id = a.id AND b.comm_published = 1 LEFT JOIN countries AS c ON c.c_id IN (a.country_ids) LEFT JOIN categories AS d ON d.c_id IN (a.category_ids) LEFT JOIN users AS e ON e.c_id IN (a.users_ids) /*WHERE published = 1*/ GROUP BY id ORDER BY id DESC LIMIT 0, 5
Mais ce retour de requête seule valeur première pour les tables jointes.
Comment puis-je obtenir ramer comme
1 | Åland Islands, Equador, Russia | Small, tiny, large, ... | Anna, John, Linda
PS! Ou dois-je créer une relation de table pour chaque table? Qu'est-ce qui ne va pas?
est pas un travail :(En conséquence, j'ai vu qu'un seul résultat 'Åland Par ex Islands' au lieu' Åland, Equador, Russia' – Globulopolis
Mise à jour ma réponse... – Naktibalda