Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 10th, 2012  |  syntax: None  |  size: 1.53 KB  |  hits: 8  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Query to SELECT uID if other rows of same uID have specific cell values
  2. +-------------+     +---------------+
  3. | Certs       |     | Clients       |
  4. +-------------+     +---------------+
  5. | userID      |     | eID           |
  6. | prodID      |     | prods         |
  7. | prodName    |     +---------------+
  8. +-------------+
  9.        
  10. userID  |  prodID  |  prodName
  11. ------------------------------
  12. 9000    |  42      |  Pen    
  13. 4234    |  54      |  Pencil
  14. 9000    |  54      |  Pencil
  15.        
  16. eID  |  prods
  17. -------------
  18. 595  |  42,54
  19.        
  20. SELECT a.userID
  21. FROM certs a
  22. INNER JOIN clients b ON b.eID = 595 AND FIND_IN_SET(a.prodID, b.prods) > 0
  23. CROSS JOIN
  24. (
  25.     SELECT (LENGTH(prods) - LENGTH(REPLACE(prods, ',', ''))) + 1 AS prodcnt
  26.     FROM clients
  27.     WHERE eID = 595
  28. ) c
  29. GROUP BY a.userID, c.prodcnt
  30. HAVING COUNT(1) = c.prodcnt
  31.        
  32. CROSS JOIN
  33. (
  34.     SELECT (LENGTH(prods) - LENGTH(REPLACE(prods, ',', ''))) + 1 AS prodcnt
  35.     FROM clients
  36.     WHERE eID = 595
  37. ) c
  38.        
  39. FIND_IN_SET('54', '34,76,54,128')
  40.        
  41. a.userID  |  a.prodID  |  b.eID  |  b.prods  |  c.prodcnt
  42. ---------------------------------------------------------
  43. 9000      |  42        |  595    |  42,54    |  2
  44. 4234      |  54        |  595    |  42,54    |  2
  45. 9000      |  54        |  595    |  42,54    |  2
  46.        
  47. SELECT ce.*
  48. FROM certs ce
  49. INNER JOIN clients c ON c.eID = **PutYourSellerIdHere** AND FIND_IN_SET(ce.pid, c.pid) > 0
  50. CROSS JOIN
  51. (
  52. SELECT (LENGTH(pid) - LENGTH(REPLACE(pid, ',', ''))) + 1 AS prodId
  53. FROM clients
  54. WHERE eID = **PutYourSellerIdHere**
  55. ) cl
  56. GROUP BY a.userID, cl.prodId
  57. HAVING COUNT(1) = cl.prodId