sql оптимизировать поиск много-много - PullRequest
0 голосов
/ 13 января 2010
usertable
----
id, username

grouptable
----
id, groupname

group_user
--------
uid, gid

books
----
id, groupname

Входные параметры: имя группы, имя пользователя
вывод: список книг

Можно ли использовать оператор 1 sql для получения списка книг, когда имя пользователя находится внутри имени группы

Вопрос 2: любая хорошая книга, рекомендующая освоить сложный SQL-оператор.

1 Ответ

1 голос
/ 13 января 2010

Этот запрос дает список книг по параметрам пользователя

SELECT b.id,
FROM usertable u
     INNER JOIN group_user gu ON gu.uid = u.id
     INNER JOIN grouptable g ON g.id= gu.gid
     INNER JOIN books b ON b.groupname = g.groupname 
WHERE u.username = @user_name

Также я думаю, что если у вас есть название группы, вы можете использовать

SELECT b.id,
FROM grouptable g 
     INNER JOIN books b ON b.groupname = g.groupname 
WHERE g.groupname = @group_name

Шина, имеющая выбор по обоим параметрам, я думаю, не очень хорошая мысль. Этот запрос получит список книг по имени группы пользователей

SELECT b.id,
    FROM usertable u
         INNER JOIN group_user gu ON gu.uid = u.id
         INNER JOIN grouptable g ON g.id= gu.gid
              AND g.group_name = @group_name
         INNER JOIN books b ON b.groupname = g.groupname 
    WHERE u.username = @user_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...