从多个主键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订购,这是唯一的标识符,它将显示重复的条目。这是一张显示结果的图片,我希望结果是这样的,但有正确的分支: