Создание подзапроса с использованием IN - PullRequest
3 голосов
/ 28 февраля 2010

У меня вопрос по созданию хорошего подзапроса для этой проблемы

Допустим, у нас есть таблица пользователей и ссылки.

users
+++++++++
id name
1  name1
2  name2
3  name3
+++++++++

links
+++++++++
id link
1  link1
2  link1
3  link1
+++++++++

И скажем, у меня есть такая таблица отношений

name_links
++++++++++++
uid  lid
1    1,3
2    1,2,3
3    2
++++++++++++

Я знаю, что это не самый используемый метод для этого. Я разместил еще вопросы по предложениям по этому методу. Если у вас есть предложения, вот ссылка.

таблица нормальных отношений запроса mysql против составной таблицы связей

Но, используя эту схему, я не могу заставить запрос работать. Я пришел к следующему запросу:

SELECT link 
FROM links 
WHERE links.id
    IN
    (
        SELECT lid
        FROM name_links
        WHERE uid=1
    )

Я делаю это с правильным синтаксисом и кавычками, но я получаю только одну строку, первую строку. Так, например, используя этот же запрос, я получаю только link1 в качестве результата. Мне нужно получить ссылку1 и ссылку3.

Это сводит меня с ума, мне действительно может понадобиться помощь.

Спасибо!

1 Ответ

2 голосов
/ 28 февраля 2010
SELECT  link
FROM    name_links
JOIN    links
ON      FIND_IN_SET(id, lid)
WHERE   uid = 1

Как я уже упоминал в ответе на ваш предыдущий вопрос , FIND_IN_SET не подлежит обсуждению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...