Advertisement
Guest User

Untitled

a guest
Feb 9th, 2014
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. MANUFACTURER
  2. ------------
  3. ID
  4. NAME
  5.  
  6. CARS
  7. ---------
  8. CAR_ID
  9. MANUFACTURER_ID
  10. NAME
  11.  
  12. PARTS
  13. ---------
  14. PART_ID
  15. CAR_ID
  16. PART_NAME
  17.  
  18. FORD ESCORT Windshield Wiper
  19. Horn
  20. Steering Wheel
  21. F-150 Windshield Wiper
  22. Horn
  23. Bed Liner
  24. TOYOTA CAMRY Floor Mat
  25. Door Handle
  26. CIVIC Headlight
  27. Horn
  28.  
  29. WITH manufacturer AS (
  30. SELECT 1 manufacturer_id, 'FORD' NAME FROM dual
  31. UNION ALL SELECT 2, 'TOYOTA' FROM dual)
  32. , CAR AS (
  33. SELECT 1 car_id, 1 manufacturer_id, 'ESCORT' AS name FROM dual
  34. UNION ALL SELECT 2, 1, 'F-150' FROM dual
  35. UNION ALL SELECT 3, 2, 'CAMRY' FROM dual
  36. UNION ALL SELECT 4, 2, 'CIVIC' FROM dual)
  37. , part AS (
  38. SELECT 1 AS part_id, 1 AS car_id, 'Windshield Wiper' AS part_name FROM dual
  39. UNION ALL SELECT 2, 1, 'Horn' FROM dual
  40. UNION ALL SELECT 3, 1, 'Steering Wheel' FROM dual
  41. UNION ALL SELECT 4, 2, 'Windshield Wiper' FROM dual
  42. UNION ALL SELECT 5, 2, 'Horn' FROM dual
  43. UNION ALL SELECT 6, 2, 'Bed Liner' FROM dual
  44. UNION ALL SELECT 7, 3, 'Floor Mat' FROM dual
  45. UNION ALL SELECT 8, 3, 'Door Handle' FROM dual
  46. UNION ALL SELECT 9, 4, 'Headlight' FROM dual
  47. UNION ALL SELECT 10, 4, 'Horn' FROM dual)
  48. SELECT case lag (m.name) over (order by p.part_id)
  49. when m.name then null
  50. else m.name
  51. end as manufcturer,
  52. case lag (c.name) over (order by p.part_id)
  53. when c.name then null
  54. else c.name
  55. end as carname,
  56. p.part_name
  57. FROM manufacturer m INNER JOIN car c ON m.manufacturer_id = c.manufacturer_id
  58. INNER JOIN part p ON p.car_id = c.car_ID
  59. ;
  60.  
  61. MANUFACTURER CARNAME PART_NAME
  62. ------------- --------- -----------------
  63. FORD ESCORT Windshield Wiper
  64. Horn
  65. Steering Wheel
  66. F-150 Windshield Wiper
  67. Horn
  68. Bed Liner
  69. TOYOTA CAMRY Floor Mat
  70. Door Handle
  71. CIVIC Headlight
  72. Horn
  73.  
  74. select m.name as manufacturer_name, c.name as car_name, p.name as part_name
  75. from manufacturer m join
  76. cars c
  77. on c.manufacturer_id = m.id join
  78. parts p
  79. on p.car_id = c.car_id;
  80.  
  81. select (case when m_seqnum = 1 then manufacturer_name else '' end) as manufacturer_name,
  82. (case when c_seqnum = 1 then car_name else '' end) as car_name,
  83. part_name
  84. from (select m.name as manufacturer_name, c.name as car_name, p.name as part_name,
  85. row_number() over (partition by m.name order by c.name, p.name) as m_seqnum,
  86. row_number() over (partition by m.name, c.name order by p.name) as c_seqnum
  87. from manufacturer m join
  88. cars c
  89. on c.manufacturer_id = m.id join
  90. parts p
  91. on p.car_id = c.car_id
  92. ) mcp
  93. order by manufacturer_name, car_name, part_name;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement