簡體   English   中英

MySQL查詢來自多個表的搜索過濾器

[英]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 JOINWHERE子句,它就不會起作用。

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

請注意, McClaneJr.均為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM