порядок mysql по максимальному значению поля соответствует

#php #mysql

#php #mysql

Вопрос:

У меня всего три таблицы, такие как

 table:Links

id | name | cat_id | weight
1 | test1 | 1 | 5
2 | test2 | 1 | 10
3 | test3 | 1 | 15
4 | test4 | 1 | 2

table:Tags

id | name | link_id 
1 | tag1 | 1 
2 | tag2 | 1 
3 | tag1 | 2 
4 | tag2 | 2 
5 | tag1 | 3 
6 | tag2 | 4 
 

здесь

 test1 have tags like: tag1,tag2
test2 have tags like: tag1,tag2
test3 have tags like: tag1
test4 have tags like: tag2
 

итак, я хочу, чтобы ближайший тест формы соответствия тега 1

таким образом, результат должен быть: test2, test3, test4

зависит от соответствия тега и веса

Ответ №1:

Попробуйте это:

 SELECT DISTINCT(l.name) AS link 
FROM links l INNER JOIN tags t ON l.id = t.link_id 
AND l.id <> 1 GROUP BY t.link_id ORDER BY COUNT(t.link_id) DESC
 

ДЕМОНСТРАЦИЯ SQLFIDDLE