作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可能在这里太厚了。
我有一个包含原因代码列表的表,对这些原因的“访问”受到列中是否包含 1 或 0 的限制。
ID | Category | Reason | Brand1 | Brand2 | Brand3
1 | Test | That | 1 | 1 | 0
2 | Test2 | This | 0 | 1 | 0
3 | Test3 | Mine | 0 | 0 | 1
用户表
Username | Brand1 | Brand2 | Brand3
User1 | 1 | 1 | 0
基本上,用户 1 应该只能看到他们在用户表的品牌列中具有 1 的原因,他们在原因表的品牌列中具有 1。
用户 1 应该只能看到原因 ID 1 和 2,因为它们在用户表中的品牌 1 中为 1,品牌 2 中为 1。
我只想返回原因表中的行,其中用户表中的用户在相应的“品牌”列中具有匹配项 1。
即
用户 1 应返回
ID | Category | Reason | Brand1 | Brand2 | Brand3
1 | Test | That | 1 | 1 | 0
2 | Test2 | This | 0 | 1 | 0
我如何在 SQL 中得到这个,我尝试在 WHERE 语句中用 OR 编写它,但它总是返回每一行。共有7个品牌栏目。
我认为我因为把问题过于复杂化而忽略了一些简单的事情。
干杯
最佳答案
如果你发布你的 SQL,那么我可以得到更接近的信息。
否则:
SELECT *
FROM Reasons AS R
INNER JOIN UserTable AS U
ON (U.Brand1 = 1 AND U.Brand1 = R.Brand1)
OR (U.Brand2 = 1 AND U.Brand2 = R.Brand2)
OR (U.Brand3 = 1 AND U.Brand3 = R.Brand3);
这将仅获取用户拥有该原因也拥有的品牌的行。从技术上讲,您可以更改 U.Brand# = R.Brand#
到只是R.Brand# = 1
,但是其他人以后可能很难阅读。
SELECT *
FROM Reasons AS R
INNER JOIN UserTable AS U
ON (U.Brand1 = 1 AND R.Brand1 = 1)
OR (U.Brand2 = 1 AND R.Brand2 = 1)
OR (U.Brand3 = 1 AND R.Brand3 = 1);
这可能比第二个查询更快,但在大多数情况下不足以引起注意。
关于sql-server - SQL查询: Obtaining Rows where Columns A in Table A = Column A in Table B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456131/
我是一名优秀的程序员,十分优秀!