Mysql SQL查询帮助1到N
我有一个MySQL数据库,其中有一个1到N的关系Mysql SQL查询帮助1到N,mysql,sql,Mysql,Sql,我有一个MySQL数据库,其中有一个1到N的关系 Sample Data: Table User: ID,Name Table Entry: ID,Name Table User_Entry: UserID,EntryID 我想获取所有条目的ID和名称以及一个标志,该标志表示,如果ID为x的用户通过表User_Entry拥有此条目,实际上不需要表C将ID链接在一起。这正是a的目的!尝试: SELECT * FROM table_a JO
Sample Data:
Table User:
ID,Name
Table Entry:
ID,Name
Table User_Entry:
UserID,EntryID
我想获取所有条目的ID和名称以及一个标志,该标志表示,如果ID为x的用户通过表User_Entry拥有此条目,实际上不需要表C将ID链接在一起。这正是a的目的!尝试:
SELECT * FROM table_a JOIN table_b WHERE table_a.id = table_b.id
您需要从条目表中选择以获取所有条目,然后左键连接到您的user_条目表以了解特定用户是否具有该条目:
SELECT e.ID,
e.Name,
CASE WHEN ue.EntryID IS NULL THEN 0 ELSE 1 END AS UserFlag
FROM Entry AS e
LEFT JOIN user_Entry AS ue
ON ue.EntryID = e.ID
AND ue.UserID = x
@GarethD的答案很好,但我将进一步验证User_条目中的实际UserID是否是User表中的实际有效用户。如果表中没有外键,则可能是用户表中不存在UserID。若要强制执行该检查,可以通过以下方式联接两个表并验证用户表中的Id
SELECT e.EntryID
,e.NAME
,CASE WHEN u.ID IS NULL THEN 0 ELSE 1 AS UserFlag
FROM Entry AS e
LEFT OUTER JOIN User_Entry AS ue
ON e.id = ue.EntryID
LEFT OUTER JOIN User AS u
ON ue.UserID = u.ID
更进一步,您可以编写case语句,通过检查User_条目表中的UserID和User表中的ID来查找坏记录
你可以更新你的问题,我们在评论里看不到任何东西,现在我更新了它-1错误的语法和查询,而不知道OP实际想要什么-1如果你编写了示例,你至少应该指定正确的语法。也读了这篇文章,你们这些人会把这篇文章变成一个社区,在那里,给予或接受帮助是令人沮丧的,因为如果我们没有按照一群武断的人所决定的正确方式请求或提供帮助,比如那些不喜欢W3学校的人,我们就会被否决。因为你不喜欢W3学校,或者因为OP的问题不清楚而否决其他人的投票,实际上并不会让你的声誉更好,即使这可能会让你觉得自己很特别。@jkovba我没有否决链接W3学校的投票,这纯粹是因为语法不正确。如果您不确定语法,您应该验证它。如果你已经用错误的语法回答,而有人告诉你这是错误的。只要用正确的语法更新你的答案,人们就会很乐意为你的答案投票。我认为每个人在这个网站上都会经历挫折,因为他们的答案被否决了。要提供好的答案,请阅读。关于W3学校,请阅读www.w3douls.com
SELECT e.EntryID
,e.NAME
,CASE WHEN u.ID IS NULL THEN 0 ELSE 1 AS UserFlag
,CASE WHEN ue.UserId IS NOT NULL AND u.ID IS NULL THEN 1 ELSE 0 END AS InvalidUserID
FROM Entry AS e
LEFT OUTER JOIN User_Entry AS ue
ON e.id = ue.EntryID
LEFT OUTER JOIN User AS u
ON ue.UserID = u.ID