String sqlStr = "SELECT *,"
+"(SELECT group_concat(gGenre) FROM spmovy_genre_table a,spmovy_genre b WHERE mID=mID "
+"AND a.gID=b.gID group by mID) Genre "
+"FROM spmovy_movie where mTitle "
+ "like ?";
我有一个表格填充的电影标题由一个带有gID的外键Genre表连接,1。带有电影标题和mID的表格,然后是第二个带有mgID,mID,gID的表格,用于链接第三个带有gID和gGenre的表格< / p>
答案 0 :(得分:1)
除了有关您的查询的一般评论(学习join
语法并使用描述性别名)之外,您的查询问题就在于:
mID = mID
在不完全相关的子查询中。
你正试图获得一套类型。但查询为每个组返回一个。在select
中的select
中,您不能拥有多个值。
您打算将此子关联起来,但事实并非如此。你需要表别名。我猜这是正确的版本:
SELECT *,
(SELECT group_concat(gGenre)
FROM spmovy_genre_table a join
spmovy_genre b
on a.gID=b.gID
WHERE spmovy_movie.mID=b.mID
) Genre
FROM spmovy_movie
where mTitle like ?
匹配可以是a.mID
,而不是b.mID
。
我还删除了group by
子句,因为不再需要它。