我有两个表:如何从给定条件的行中选择表中的所有行?
users
| id | name |
|----|--------|
| 0 | Bob |
| 1 | Ted |
parameters
| id | parameter | value |
|----|-----------|--------|
| 0 | a | 5 |
| 0 | b | 9 |
| 0 | c | 0 |
| 1 | a | 27 |
| 1 | b | 0 |
*parameters.id references users.id
不幸的是,标准化值的唯一方法是在提供的表格。参数对所有用户都不一致,并且不能是列。
我必须为每个用户选择所有参数和它们的值,但是我可能需要查询参数特定值(同时仍抓住所有行用户。)
例如,我可以想其中参数一个具有值的所有参数大于10这将返回:
| id | name | parameters | values |
|----|-------|-------------|----------|
| 1 | Ted | a,b | 27,0 |
我可以从参数表中获取的所有数据,但我不知如何我可以有条件地选择数据:
SELECT a.*, b.params, b.values
FROM users AS a
JOIN (
SELECT id, GROUP_CONCAT(parameters) AS params, GROUP_CONCAT(value) AS values
FROM parameters
GROUP BY id
) b
ON a.id=b.id
有没有办法实现这一点,还是有更好的数据库设计?
(如果任何人有这个问题的一个更好的标题......随意)
误读了问题 - nm! – user3791372 2014-09-20 16:14:19