2013-10-25 5 views
0

Вот таблица, которая соединяет множественные tags к imageПоиск связанных изображений с помощью своих тегов

| image_id | tag_id | 
|:---------|---------:| 

| 1  | 43  | 
| 1  | 34  | 
| 1  | 12  | 
| 1  | 4  | 
| 1  | 23  | 
| 1  | 5  | 

| 2  | 4  | 
| 2  | 23  | 
| 2  | 53  | 
| 2  | 43  | 
| 2  | 24  | 
| 2  | 44  | 

| 3  | 5  | 
| 3  | 12  | 
| 3  | 4  | 
| 3  | 53  | 
| 3  | 44  | 

| 4  | 100  | 
| 4  | 120  | 
| 4  | 433  | 
| 4  | 532  | 
| 4  | 441  | 

Я хочу написать SQL-запрос, который будет возвращать взаимосвязанное изображение в том, что заказана наиболее тесно связанные между собой по своему теги (чем больше тегов они разделяют, тем выше будет).


Image ID 1 и ID изображения 2 доля 4 Идентификатор тега в 43, 4, 23, 4

Image ID 1 и ID изображения 3 доля 3 тега Идентификаторы 12, 4, 5

Изображение id 1 и изображение ID 4 доля 0 тег идентификаторы

Так изображение 2 и 3 будут возвращены с 2 быть выше 3, потому что она имеет метки общих и 4 будет исключен, поскольку она не разделяет тегов.


Это то, что у меня до сих пор, и это, кажется, работает, но без приказа большинства связанных с наименее.

SELECT * 
    FROM image_tag i 
    JOIN tag t 
    ON t.tag_id = i.tag_id 
    WHERE i.tag_id IN (
     SELECT tag_id 
     FROM image_tag 
     WHERE image_id = 1) 
    AND image_id != 1 
+0

Я изо всех сил стараюсь понять входы и выходы. Можете ли вы предоставить другой примерный набор данных, возможно, с 5 или 6 связанными тегами на изображение? –

+1

@PP. Я добавил более обширный набор данных и, надеюсь, более четкое объяснение. – jamcoupe

ответ

0

Есть у ожидать вашего результата что-то, как в ссылке ниже:

http://sqlfiddle.com/#!4/57609/3

Если да. вы можете использовать этот sql или вставить свою выходную версию.

Смежные вопросы