- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个基于 PHP 的 Web 软件,但我遇到了一个我不知道解决方案语法的问题。
基本上,我有两个表:
+-------------+ +---------------+
| Certs | | Clients |
+-------------+ +---------------+
| userID | | eID |
| prodID | | prods |
| prodName | +---------------+
+-------------+
在这里,个人购买的每件产品都由他唯一的用户 ID 和产品的唯一 prodID 存储。
客户就像卖家,他们自己有不同的 ID,prod 是一串以逗号分隔的产品 ID。
证书表中的示例行如下:
userID | prodID | prodName
------------------------------
9000 | 42 | Pen
4234 | 54 | Pencil
9000 | 54 | Pencil
示例客户行如下:
eID | prods
-------------
595 | 42,54
现在,我需要形成一个查询,返 repo 买了特定卖家的所有产品的所有用户 ID。
例如,对于卖家 ID 595,它应该返回 9000,因为用户 ID 9000 已经购买了 42 和 54。
为了方便起见,可以修改表格结构,但由于其他技术问题,我无法创建与其卖家相关的规范化产品列表。
任何帮助将不胜感激!谢谢~
注意:另一种表达方式是将卖家的产品列表保存在结果类型数组中。然后SELECT prodID FROM certs WHERE userID = x最后检查 prodID 的结果数组是否包含数组 prods 的所有元素。
最佳答案
试试这个解决方案:
SELECT a.userID
FROM certs a
INNER JOIN clients b ON b.eID = 595 AND FIND_IN_SET(a.prodID, b.prods) > 0
CROSS JOIN
(
SELECT (LENGTH(prods) - LENGTH(REPLACE(prods, ',', ''))) + 1 AS prodcnt
FROM clients
WHERE eID = 595
) c
GROUP BY a.userID, c.prodcnt
HAVING COUNT(1) = c.prodcnt
CROSS JOIN
(
SELECT (LENGTH(prods) - LENGTH(REPLACE(prods, ',', ''))) + 1 AS prodcnt
FROM clients
WHERE eID = 595
) c
这样做是将特定卖家拥有的 prodID 数量的计数附加到每一行。我们通过获取 CSV 列表的字符串长度并减去相同的 CSV 列表但不带逗号的长度,然后将差值加一来计算它。示例:
“54,234,436
”的字符串长度为 10。
替换逗号:
“54234436
”的字符串长度为 8。
那么 (10-8)+1 = 3。
列表中的三个项目。
我们使用 FIND_IN_SET
作为 certs
和 clients
之间的连接条件,以确定 prodID
是否存在于 CSV prods
列表中。
FIND_IN_SET
基本上返回 CSV 列表中特定项目的从 1 开始的索引位置。例如:
FIND_IN_SET('54', '34,76,54,128')
将返回 3
,因为 54
作为列表中的第三项存在。我们只需要检查它是否存在于加入条件的列表中,所以我们只检查它是否 > 0。如果该项目不在 CSV 列表中,它将返回 0。
一旦我们获得了特定客户的笛卡尔连接产品计数,并且连接了表,中间结果集将如下所示:
a.userID | a.prodID | b.eID | b.prods | c.prodcnt
---------------------------------------------------------
9000 | 42 | 595 | 42,54 | 2
4234 | 54 | 595 | 42,54 | 2
9000 | 54 | 595 | 42,54 | 2
这些行中的每一行都满足连接条件。
然后我们按 userID
分组以计算每个 userID
的行数。由于 9000 与 c.prodcnt
中的重复值具有相同的行数,因此返回该行。 userID 4234
被过滤掉,因为只有一行满足连接条件。
关于php - 如果相同 uID 的其他行具有特定的单元格值,则查询 SELECT uID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607237/
如果满足条件,我如何才能只获取特定记录? 我有代码为 "SELECT a.id, a.text, a.uid, a.time FROM story a INNER JOIN friends b
每当我尝试提取用户的 uid 时,它都会给我电子邮件。有谁知道为什么? var user = firebase.auth().currentUser; if (user != null
我正在为自己的业务编写一个简单的客户数据库(新娘礼服),并尝试实现以下目标: 我尝试过滤掉那些没有“ordered = 1”标志的uid。因此,不应显示来自用户的所有条目,其中至少一个条目具有“ord
我有一张表,UID 是主键。在旧系统中,它不是主键。因此,人们可以向该字段插入数据,但我们不想再这样做了。 在这个表中,我在 UID 2000 和 2005 之间有一个差距(2003 被占用)。我如何
我刚开始使用 Firebase(我正在使用react-redux-firebase,但不确定这是否与这个问题相关)。我在使用这些标准身份验证规则时遇到问题: { "rules": {
警告:我对一般编码和 xcode 非常陌生 运行 Xcode 8.2 无论如何,我已经保存了我的用户身份验证详细信息、电子邮件密码。我将它们保存在 user/currentUser.UID 下,它提供
有人知道吗,如果我从我的应用程序启动 android web-view 窗口,它是否与启动它的应用程序具有相同的 UID。我正在使用三星手机,我认为他们使用的是 Web-Kit 浏览器,但我也想知道使
我有一个正在注册用户的注册表单,如果注册完成,应该重定向到index.html(主页)。 问题:按下提交按钮后,页面刷新并且表单获取重置,不会重定向,除非我按 CTRL + SHIFT + R 然后将
这个问题在这里已经有了答案: SecurityException: caller uid XXXX is different than the authenticator's uid (17 个答案
我正在尝试构建一个基于 PHP 的 Web 软件,但我遇到了一个我不知道解决方案语法的问题。 基本上,我有两个表: +-------------+ +---------------+ | Ce
我有一个 Firebase 表,其中包含任务列表。 任务有一个名为 uid 的字段。 我想获取我传入的 uid == uid 的所有任务。 最佳答案 Firebase 允许您对一组数据进行排序和过滤。
这是一个 set-root-uid 程序 $ls -l -rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x* 源代码: int main(void) {
我在 OSX 上使用 emacs 24.5.1 和 mu4e 和 mbsync。我正在与 imac 和笔记本电脑同步,所以可能与前面提到的错误相同 here ,但没有人发布解决方案。 我的具体错误是在
我注意到 access(2) 系统调用使用真实且无效的用户 ID 进行访问控制检查的困难之处。虽然这与 Linux 上的 access(2) 手册页所说的一致,但对我来说仍然没有什么意义......
我需要帮助来了解如何创建数据库系统,以便每个用户都有自己的数据,我想确保当我从我的站点发送数据时,它是用这个顺序保存的(集合名称)/(创建该数据的用户的 uid)/(名称由日期创建的文档#this 我
假设我有一个独特的 VarChar(32) 列。 例如。 13bfa574e23848b68f1b7b5ff6d794e1。 我想在将列转换为 int 时保留它的唯一性。我想我可以将所有字母转换为它们
我想弄清楚如何将我的“数据”数组中的 Firebase UID 字符串与我从 firebase 调用中提取的键相匹配。我需要将“数据”数组中的字符串与“键”相匹配,然后我就可以按我想要的方式操作数据。
如果我使用 imaplib 在收件箱中有此邮件的 UID,如何获取所有 Maill 文件夹中邮件的 UID?如您所知,所有邮件和收件箱中的两个实例中的谷歌商店邮件我想使用 imaplib 将其移动到垃
我正在制作一个控制电话网络状态的应用(在 2G/3G 之间切换)。 出于某种原因,我的应用程序使用 sharedUserId="android.uid.system",但在 Phone 上下文下运行(
我在尝试实现 Sample Sync Adapter 应用程序时收到上述异常。我看过很多与此问题相关的帖子,但没有令人满意的回复。 所以我会记下my solution在这里以防其他人遇到同样的问题。
我是一名优秀的程序员,十分优秀!