我正在为我的项目扩展用户配置文件,添加更多信息。当我遇到问题时,我只是在添加国家/地区。这是我选择所需的所有配置文件数据的查询:
SELECT c.*, d.username, d.email, e.country_name
FROM user_profiles c, users d, country e
WHERE c.user_id = ".$id." AND d.id = ".$id."
AND e.country_name = (SELECT country_name FROM country WHERE id = c.country_id)
c.* 应该从 user_profiles 中选择所有列。
这$id
是一个用户选择应该返回的配置文件的 id。问题是,尽可能保持注册简单,我那里没有国家选择器。所以当这个查询起作用时,user_profiles 中的 country_id 列是空的,这意味着当我想返回 country_name 时,查询结果是空的,所以没有返回配置文件数据。
我试图用CASE
or重写它LEFT JOIN
,但我认为我遗漏了一些东西。我想查找 country_id 是否不为空,如果不为空,请同时选择country_name
this country_id
。有任何想法吗?
感谢您的回复。