这里有什么问题,或者遗失了什么?
SELECT CASE WHEN (f_username = '$username' AND table1.code = table2.code) THEN '1'
ELSE '0'
END as is_favorite
FROM (
SELECT *
FROM favorites
WHERE f_username='$username'
AND code = table2.code
) table1
INNER JOIN (
SELECT *
FROM groups
WHERE gname LIKE '%$text%'
) table2
出现错误
未知栏' table2.code'在' where子句'
修改
我有两张桌子(团体/收藏)
组结构是: gname / code
收藏夹结构是: code / f_username
我正在寻找的是我想获取特定查询中的组列表,我想为每个组循环检查收藏夹是否基于用户名,如果他添加为喜欢与否。
答案 0 :(得分:0)
错误或缺失了什么?您指的是第一个子查询中的表别名table2
。该别名不在该子查询的范围内,因为您只将其定义为第二个子查询的别名。这是一个令人讨厌的SQL:AND code = table2.code
。查询解析器没有到达SELECT子句,因为它试图找出它首先可用的列。
您的查询结构奇怪。您可能应该考虑简单地加入您的表格。
SELECT whatever
FROM favorites f
JOIN groups g ON f.code = g.code
WHERE f.f_username = '$username'
AND g.gname LIKE '%$text%'
但你没有显示任何样本数据或解释你想要的结果,所以我猜测。
答案 1 :(得分:0)
我认为这就是你所追求的目标:
SELECT gname, CASE WHEN favorites.code IS NULL THEN '0'
ELSE '1'
END as is_favorite
FROM groups
WHERE WHERE gname LIKE '%$text%'
LEFT JOIN favorites ON groups.code = favorites.code