如果条件适用,则选择SQL

时间:2013-05-29 14:06:45

标签: sql

我有3个值:

  • 的ObjectID
  • 用户电子邮件
  • 用户密码

两张桌子:

  • 对象:

    • object id
    • 用户ID
    • 对象名称
  • 用户:

    • 用户ID
    • 电子邮件
    • 密码

我想在以下情况下选择对象的名称:

  • 用户有效(电子邮件并传递返回行)
  • 和对象属于用户或具有用户id = 0(属于所有人)
  • object.id = ObjectID

什么sql语句可以帮到我?

5 个答案:

答案 0 :(得分:1)

未经测试但应该有效。

SELECT 
    o.object_name 

FROM
    objects o
    LEFT JOIN users u ON o.user_id = u.user_id

WHERE
    o.objectId = 1
    AND (
        (u.email = ''
        AND u.password = '')
        OR o.user_id = 0
    )

答案 1 :(得分:1)

只返回对象名称?

SELECT object_name 
FROM objects o LEFT JOIN users u ON o.user_id = u.user_id
WHERE (u.email IS NOT NULL
AND u.password IS NOT NULL) 
OR user_id = 0

答案 2 :(得分:1)

SELECT o.object_name FROM objects o
LEFT JOIN users u ON o.user_id=u.user_id
WHERE (u.email IS NOT NULL AND u.password IS NOT NULL)
OR o.user_id=0

我不确定你的意思是object_name还是object_id?

答案 3 :(得分:0)

SELECT 
   o.Name
FROM
   Objects o
LEFT JOIN
   Users u
ON
   u.Id = o.UserId
WHERE
   (u.Email = email
AND
   u.Password = password)
OR
   o.UserId = 0

答案 4 :(得分:0)

如果你想测试,我把对象放在SqlFiddle中。

http://sqlfiddle.com/#!2/86023/9

SELECT O.ID FROM OBJECTS O

 WHERE O.ID IN  (
SELECT U.ID FROM USERS U
WHERE  U.USER = 'test' AND U.PASS = 'test'
)

OR O.USERID = 0