从多个主键sql中获取行

从多个主键sql中获取行,sql,rows,Sql,Rows,我有几张桌子: Works ____________________________________________________________________ | | |id user_id cat_id branch_id country budget explanation | |_________________________

我有几张桌子:

Works
 ____________________________________________________________________
|                                                                   |
|id  user_id  cat_id  branch_id  country  budget  explanation       |
|___________________________________________________________________|

Categories
 ____________________________________________________________________
|                                                                   |
|id  category                                                       |
|___________________________________________________________________|

Categories_Branch
 ____________________________________________________________________
|                                                                   |
|id  cat_id  branch                                                 |
|___________________________________________________________________|


I want them displayed like this:
 ____________________________________________________________________
|                                                                   |
|id  country  budget  explanation  category  branch                 |
|___________________________________________________________________|
我无法实现此功能,当前sql为:

SELECT works.id, works.country, works.budget, works.explanation, categories.category, categories_branch.branch
FROM works, categories, categories_branch
WHERE works.user_id = ".$_SESSION['customer_id']."
AND works.cat_id = categories.id
AND categories_branch.cat_id = categories.id
GROUP BY works.id
这会使分支组设置错误,显示错误的分支组

有人知道如何解决这个问题吗?非常感谢您的帮助

编辑

这是一个显示我希望它如何排序的图像,问题是显示了错误的分支


让我们从这里开始,然后从这里开始:

SELECT works.id, works.country, works.budget, works.explanation, categories.category, categories_branch.branch
FROM works
INNER JOIN categories ON works.cat_id = categories.id
INNER JOIN categories_branch ON categories_branch.cat_id = categories.id
WHERE works.user_id = ".$_SESSION['customer_id']."

您需要将表连接在一起,而不是使用所有那些WHERE子句。您如何执行
GROUP BY works.id
并仍然选择其他列?请删除GROUP BY。与使用JOIN相比,WHERE's既笨拙又低效,但它们应该在这里发挥作用。@DavidStarkey,不幸的是,这在MySQL中是有效的。您好,谢谢您的评论。我删除了groupby works.id并尝试加入,但仍然遇到同样的问题。行没有正确分组,下面是一张显示结果的图片:嗨,谢谢你的回答。这就像我在查询中删除GROUP BY时一样。但据我所知,这是一个更好的方法。问题是查询结果分组不正确。这里有一张图片显示了我的意思:你希望它如何分组?我希望它按作品分组,每个作品可以有不同的类别/分支。一个简单的排序应该就足够了。您是否有包含工作名称的字段?如果我按works.id订购,这是唯一的标识符,它将显示重复的条目。这是一张显示结果的图片,我希望结果是这样的,但有正确的分支: