[英]MySQL query for search filter from multiple tables
我有多個表,我有一個帶有GridView的搜索ASP.NET頁,以顯示結果。 GridView必須包含名稱,學校,州,國家/地區。我有多個僅包含數據的表:
index_States
indexID| State
----------------
1 | state1
2 | state2
3 | state3
index_Contries
indexID| Country
----------------
1 | country1
2 | country2
3 | country3
index_Schools
indexID| School
----------------
1 | school1
2 | school2
3 | school3
然后我有包含indexID作為參考的表
基本信息
idKey | Name
--------------
1 | John
2 | McClane
3 | Jr.
Academic_XP
id | idSchool | idState | idCountry | idKey
--------------------------------------------
1 | 1 | 3 | 20 | 2
2 | 1 | 5 | 146 | 3
3 | 2 | 1 | 65 | 9
然后我有包含UserType的表,因為將僅搜索某些類型的用戶
用戶
id | UserType | idKey
-----------------------
1 | 1 | 1
2 | 3 | 2
3 | 3 | 3
4 | 1 | 4
我已經嘗試了多個查詢,但似乎都沒有用。 最后一個似乎有效的查詢是使用INNER JOIN
SELECT Name, State
FROM General_Info A, Academic_XP B
INNER JOIN index_States D ON B.idState = D.indexID
GROUP BY A.id;
但是一旦添加第二個INNER JOIN或WHERE子句,它就不會起作用。
SELECT Name, State
FROM General_Info A, Academic_XP B, Users
INNER JOIN index_States D ON B.idState = D.indexID
INNER JOIN index_School E ON B.idSchool = E.indexID
GROUP BY A.id
WHERE Users.UserType = 3;
我不知道該怎么辦。 所以我想問題是
我該如何查詢從所有這些表返回的內容呢?
Name | State | School | Country
---------------------------------------
McClane | state3 | school1 | country20
Jr. | state1 | school5 | country146
請注意, McClane和Jr.均為UserType3。我將不勝感激。
您在沒有連接的表之間生成cartesian product
。 我認為這是您在尋找使用其他JOINs
:
SELECT DISTINCT
G.Name,
S.State,
C.Country,
SC.School
FROM Academic_XP A
JOIN Users U ON A.idKey = U.idKey
JOIN General_Info G ON A.id = G.idKey
JOIN Index_States S ON A.idState = S.indexID
JOIN Index_Contries C ON A.idCountry = C.indexID
JOIN Index_Schools SC ON A.idSchool = SC.indexID
WHERE U.UserType = 3
如果某些表沒有匹配的鍵,則需要使用OUTER JOIN
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.