我在数据库中有:
User:
id | name
1 | one
2 | two
3 | three
4 | four
5 | five
House:
id | name
1 | London
2 | Barcelona
UserHouse:
id_user | id_house
1 | 1
2 | 2
4 | 1
如何在SQL查询IF和ISSET中使用?
从用户中选择*
我想收到:
用户:
name | has_house
1 | yes
2 | yes
3 | no
4 | yes
5 | no
我必须从用户中使用SELECT*启动查询。我不能在House或UserHouse中出演。有可能吗?如果是,如何?
我也可以使用DOCTRINE和Symfony。
尝试使用LEFT JOIN
SELECT a.id, IF(COALESCE(b.id_user, 1) = 1, 'no', 'yes') has_house
FROM user a
LEFT JOIN userhouse b
on a.id = b.id_user
如果您真的只能通过用户的SELECT*启动查询,您可以尝试以下操作:
SELECT * FROM User
JOIN (
SELECT
User.id id_user,
IF(UserHouse.id_house > 0, 'yes', 'no') AS has_house
FROM
User
LEFT JOIN
UserHouse ON UserHouse.id_user = User.id
) HasHouse ON HasHouse.id_user = User.id;
这可能会有所帮助,
http://msdn.microsoft.com/en-us/library/ms182717.aspx
如果您使用的是sql server,则应该使用case语句,而不是if语句。
SELECT user.id, 'Has House' =
CASE COALESCE(b.id_user, 0)
WHEN 0 THEN 'No'
ELSE 'Yes'
END
FROM user as u leftjoin userhouse as uh on u.id = uh.id_user
http://msdn.microsoft.com/en-us/library/ms181765.aspx