Guest User

Untitled

a guest
Aug 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. SQL - Confusing Query
  2. photoID (INT), setID (INT)....
  3. 18900 , 234 , ...
  4. 18901 , 234 , ...
  5. 18902 , 234 , ...
  6. 18903 , 249 , ...
  7. 18904 , 249 , ...
  8. 18905 , 249 , ...
  9.  
  10. photoID (INT), keywordID (INT)
  11. 18900 , 12
  12. 18900 , 21
  13. 18901 , 17
  14. 18905 , 26
  15. 18905 , 10
  16.  
  17. SELECT X.photoID FROM photos X
  18. INNER JOIN
  19. (SELECT DISTINCT P.setID FROM
  20. photos P
  21. LEFT OUTER JOIN (SELECT K.photoID, COUNT(*) C FROM photoKeyword K GROUP BY K.photoID) KC ON KC.photoID = P.photoID
  22. GROUP BY P.setID
  23. HAVING SUM (KC.C) < 1) Y ON X.setID = Y.SetID
  24.  
  25. SELECT photoID
  26. , setID
  27. FROM photos
  28. WHERE photoID NOT IN
  29. ( SELECT photoID
  30. FROM photoKeyword
  31. )
  32. AND setID =
  33. ( SELECT setID
  34. FROM photos
  35. WHERE photoID NOT IN
  36. ( SELECT photoID
  37. FROM photoKeyword
  38. )
  39. ORDER BY setID
  40. LIMIT 1
  41. )
  42.  
  43. select
  44. p.PhotoID,
  45. p.SetID
  46. from
  47. Photos p
  48. LEFT JOIN photoKeyword pkey
  49. on p.PhotoID = pkey.PhotoID
  50. where
  51. pkey.PhotoID = null
  52.  
  53. SELECT p.setID, GROUP_CONCAT(p.photoID ORDER BY p.photoID) AS photoIDs
  54. FROM photos p
  55. JOIN photoKeyword k USING (photoID)
  56. WHERE k.photoID IS NULL
  57. GROUP BY 1
  58. LIMIT 1
Add Comment
Please, Sign In to add comment