
Untitled
By: a guest on
Aug 10th, 2012 | syntax:
None | size: 1.53 KB | hits: 8 | expires: Never
Query to SELECT uID if other rows of same uID have specific cell values
+-------------+ +---------------+
| Certs | | Clients |
+-------------+ +---------------+
| userID | | eID |
| prodID | | prods |
| prodName | +---------------+
+-------------+
userID | prodID | prodName
------------------------------
9000 | 42 | Pen
4234 | 54 | Pencil
9000 | 54 | Pencil
eID | prods
-------------
595 | 42,54
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
FIND_IN_SET('54', '34,76,54,128')
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
SELECT ce.*
FROM certs ce
INNER JOIN clients c ON c.eID = **PutYourSellerIdHere** AND FIND_IN_SET(ce.pid, c.pid) > 0
CROSS JOIN
(
SELECT (LENGTH(pid) - LENGTH(REPLACE(pid, ',', ''))) + 1 AS prodId
FROM clients
WHERE eID = **PutYourSellerIdHere**
) cl
GROUP BY a.userID, cl.prodId
HAVING COUNT(1) = cl.prodId