gpt4 book ai didi

c# - MySQL 查询多个表的搜索过滤器

转载 作者:行者123 更新时间:2023-11-30 23:01:10 25 4
gpt4 key购买 nike

我有多个表,我有一个带有 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 的表作为引用
General_Info

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. 都是 UserType 3。我将不胜感激任何帮助。

最佳答案

您正在没有联接的表之间生成笛卡尔积。我认为这就是您使用额外的 JOIN 寻找的东西:

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

关于c# - MySQL 查询多个表的搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com