首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL JOIN在一次select中查询多个表并返回多个结果

MySQL JOIN在一次select中查询多个表并返回多个结果
EN

Stack Overflow用户
提问于 2012-01-12 04:38:30
回答 2查看 145关注 0票数 1

我会问,对不起,我的英语不好:(

我有多张桌子

代码语言:javascript
运行
复制
CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) COLLATE utf8_slovak_ci NOT NULL,
  `password` varchar(200) COLLATE utf8_slovak_ci NOT NULL,
  `status` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`,`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci;


CREATE TABLE `user_acl` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `id_user` int(11) unsigned NOT NULL,
  `group` smallint(5) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci;


CREATE TABLE `user_profil` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(100) COLLATE utf8_slovak_ci NOT NULL,
  `fullname` varchar(100) COLLATE utf8_slovak_ci NOT NULL,
  `profil` text COLLATE utf8_slovak_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci;

查询:

代码语言:javascript
运行
复制
SELECT user.*, prf.*, acl.*
FROM (SELECT * FROM user LIMIT 1) AS user
LEFT JOIN user_acl AS acl ON (acl.id_user = user.id)
INNER JOIN user_profil AS prf ON (user.id = prf.id)

我有桌子useruser_acluser_profil

useruser_profilid下编制索引。公用键是什么

user_acl与表中的表user (id)有id_user公用键,但是user_acluser有更多的行,我需要在一个查询中包含表user_acl中的所有行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-12 05:27:00

您可以使用GROUP_CONCAT让MySQL将多行中的值合并到一行中

代码语言:javascript
运行
复制
SELECT user.*, prf.*, GROUP_CONCAT(acl.id), GROUP_CONCAT(acl.group) 
FROM user 
LEFT JOIN user_acl AS acl ON (acl.id_user = user.id) 
INNER JOIN user_profil AS prf ON (user.id = prf.id) 
GROUP BY user.id;
票数 1
EN

Stack Overflow用户

发布于 2012-01-12 04:44:30

如果您需要多个acl行对应一个用户行,则必须将查询分开。编辑:但是如果你需要用一个查询来编辑它,那么你应该使用某种按位操作。http://codingrecipes.com/how-to-write-a-permission-system-using-bits-and-bitwise-operations-in-php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8826253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档