我查看了其他Q& A&s,我没有看到我的情景。
我的副本很奇怪。不同的登录管理器将获得不同数量的重复项,具体取决于其下的用户数量。
SELECT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.groupid = user_groups.groupid
需要显示my_quotes的结果,同时还要显示其他表格中的其他信息。
报价属于用户,也属于经理。当经理为用户创建报价时,但恰好有管理者管理的其他用户,上述查询中的报价表将显示每个用户的报价,即使报价仅属于一个用户。
所以说经理下有2个用户。用户1有引号,用户2有引号。引号mysql表只有2条记录,因此html表应该只显示2条记录,而是显示4条记录。报价1为2,报价2为2。
现在让我们说经理下面添加了另一个用户。然后,html表将为每个引号显示3条记录。这很奇怪。
以下不起作用:
SELECT DISTINCT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.groupid = user_groups.groupid
user_groups:
groupid, name, userid
USER_TABLE:
userid, username, email, usergroup, name, company, address, phone, manager, client
my_quotes:
id, userid, groupid, clientname, ponumber, date, postage, qty, price, total, approved
有几个表有太多字段要发布。我只是把相关问题放在这个问题上。
给出的答案之一有所帮助,但仍有问题。如您所见,根据登录用户是admin,manager还是client,有3种不同的查询。管理员和客户端显示正确的记录,管理员几乎显示,但管理员缺少记录。
if($_SESSION['usergroup']==1) {
$tableresult = mysql_query('
SELECT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.userid = user_table.userid
') or die(mysql_error());
} else if($manager==1) {
$tableresult = mysql_query('
SELECT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.userid = user_table.userid
WHERE user_groups.userid='.$_SESSION['userid'].'
') or die(mysql_error());
} else {
$tableresult = mysql_query('
SELECT my_quotes.*, user_table.*
FROM my_quotes
INNER JOIN user_table
ON my_quotes.userid = user_table.userid
WHERE user_table.userid = '.$_SESSION['userid'].'
AND (approved = 1 OR approved = 2)
') or die(mysql_error());
}
答案 0 :(得分:2)
根据您的示例,引号与用户的ID相关,那么您应该join
按用户的ID而不是该组。
SELECT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.userid = user_table.userid
管理员的新答案:(管理员可以看到所有引号)
SELECT user_table.*, my_quotes.*
FROM user_table
RIGHT JOIN my_quotes
ON my_quotes.userid = user_table.userid //this will grab all the quotes
答案 1 :(得分:1)
SELECT DISTINCT user_groups.*, user_table.*, my_quotes.*
FROM user_groups
RIGHT JOIN user_table
ON user_table.usergroup = user_groups.groupid
RIGHT JOIN my_quotes
ON my_quotes.groupid = user_groups.groupid
使用不同或更好的编码。