usertable
----
id, username
grouptable
----
id, groupname
group_user
--------
uid, gid
books
----
id, groupname
輸入參數:組名,用戶名
輸出:書SQL優化搜索多對多
清單是否可以使用1個sql語句得到的書籍列表時,用戶名是內組名
問題2:任何好書推薦,掌握複雜的SQL語句..
usertable
----
id, username
grouptable
----
id, groupname
group_user
--------
uid, gid
books
----
id, groupname
輸入參數:組名,用戶名
輸出:書SQL優化搜索多對多
清單是否可以使用1個sql語句得到的書籍列表時,用戶名是內組名
問題2:任何好書推薦,掌握複雜的SQL語句..
此查詢用戶parametar給出的書單
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
只是爲了確認,U使用內部連接。但同一用戶可以有多個不同的書籍。內連接意味着1左表-1右表連接(全連接)在這種情況下,唯一的用戶將被列出,這是不正確的..?對不起,如果我錯了,請使用Where子句解釋 – cometta 2010-01-13 09:40:38
我只留下一行usertable用戶的用戶名與參數值相同。使用內部連接我得到儘可能多的行作爲用戶的一部分。所以如果用戶在5組中,我會得到5排。然後我通過參數@group_name過濾這些組。我得到這個組的書籍清單。如果它仍不清楚它是如何工作的,只需將「b.id」替換爲「*」,並刪除所有內部連接和where子句並開始逐個添加它們以查看效果 – IordanTanev 2010-01-13 09:58:06
名單你不應該把兩個問題在一個... – RedFilter 2010-01-13 15:07:12