Skip to content

Commit a4e50c7

Browse files
committed
finally did the join method
1 parent 30e0bde commit a4e50c7

File tree

3 files changed

+42
-31
lines changed

3 files changed

+42
-31
lines changed

mysqlite/my_sqlite_request.rb

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "csv"
22
class MySqliteRequest
3-
attr_accessor :table_name, :table_data,:hashedDataB, :request, :columns ,:result_hash_array,:isWhere,:where_count,:isJoin,:column_on_db_a,:column_on_db_b,:filter_column, :filter_column_value
3+
attr_accessor :table_name, :hashedDataA,:hashedDataB, :request,:filename_db_b, :columns ,:selected_hash_array,:isWhere,:where_count,:isJoin,:column_on_db_a,:column_on_db_b,:filter_column, :filter_column_value
44
def initialize
55
@isWhere=false
66
@isJoin=false
@@ -31,31 +31,47 @@ def where(column_name, value) # During the run() you will filter the result whic
3131
def join(column_on_db_a, filename_db_b, column_on_db_b)
3232
# Read filename_db_b table data
3333
@isJoin=true
34-
@hashedDataB = CSV.parse(File.read(filename_db_b), headers: true).map(&:to_h).take(200)
34+
3535
@column_on_db_a=column_on_db_a
3636
@column_on_db_b=column_on_db_b
37+
@filename_db_b=filename_db_b
3738

3839
self
3940
end
4041

4142

4243

4344
def run
44-
@result_hash_array=[]
45-
@joined_hash_array=[]
45+
@hashedDataA=table_to_hashed(@table_name)
46+
@selected_hash_array=[]
4647
@filtered_hash_array=[]
48+
@merged_hash_array=[]
4749
@final=[]
4850

49-
51+
52+
if @isJoin
53+
@hashedDataB = CSV.parse(File.read(@filename_db_b), headers: true).map(&:to_h).take(5)
54+
@hashedDataA.each do |rowA|
55+
result_hash={}
56+
@hashedDataB.each do |rowB|
57+
if rowB[@column_on_db_b] === rowA[@column_on_db_a]
58+
merged = rowA.merge(rowB)
59+
@merged_hash_array<<merged
60+
end
61+
end
62+
end#hashsedDataA
63+
@hashedDataA=@merged_hash_array
64+
end#is join
65+
66+
5067
#convert table data in CSV::Row to a HashedData
5168
if @request==='select' # select the columns from the each table row and corresponding data
52-
@table_data=table_to_hashed(@table_name)
53-
table_data.each do |current_row|
69+
@hashedDataA.each do |current_row|
5470
result_hash={}
5571
@all_conditions_met=true;
5672
57-
process_row(current_row, result_hash, @result_hash_array, @columns)
58-
@final=@result_hash_array
73+
process_row(current_row, result_hash, @selected_hash_array, @columns)
74+
@final=@selected_hash_array
5975
6076
6177
if @isWhere
@@ -75,48 +91,43 @@ def run
7591
7692
end #of request='select'
7793
78-
if @isJoin
79-
@result_hash_array.each do |rowA|
80-
@hashedDataB.each do |rowB|
81-
if rowB[@column_on_db_b] == rowA[@column_on_db_a]
82-
merged = rowA.merge(rowB)
83-
@joined_hash_array<<merged
84-
end
85-
end
86-
end
87-
@final=@joined_hash_array
88-
end
89-
puts ".......................final............"
90-
puts @final.inspect
94+
95+
9196
97+
puts '..........................final result'
98+
puts @final.inspect
9299
end#of def run
93100
end#of class
94101
95102
#HELPER FUNCTIONS
96103
97104
def table_to_hashed(table_name)
98-
hashedData=CSV.parse(File.read(table_name),headers:true).map(&:to_h).take(55)
105+
hashedData=CSV.parse(File.read(table_name),headers:true).map(&:to_h).take(5)
99106
return hashedData
100107
end
101108
102-
def process_row(row,result_hash, result_hash_array,columns)
109+
def process_row(row,result_hash, selected_hash_array,columns)
103110
if columns[0]==='*'
104-
result_hash_array<<row
111+
selected_hash_array<<row
105112
106113
else
107114
columns.each do |column_name|
108115
result_hash[column_name]=row[column_name]
109116
110117
end
111118
end
112-
result_hash_array << result_hash if result_hash != {}
119+
selected_hash_array << result_hash if result_hash != {}
120+
113121
end
114122
115123
116124
request = MySqliteRequest.new
117125
request = request.from('nba_player_data.csv')
118-
request = request.select('name',"height")
126+
request = request.select("name",'weight','weight2','college','year_start','player')
119127
request = request.where('college', 'University of California')
120128
request = request.where('year_start', '1997')
121129
# request =request.join('college','nba_players.csv','college')
122-
request.run
130+
131+
request.run
132+
133+

mysqlite/nba_player_data.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name,year_start,year_end,position,height,weight,birth_date,college
2-
Alaa Abdelnaby,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
2+
Alaa Abdelnaby,1997,1995,F-C,6-10,240,"June 24, 1968",University of California
33
Zaid Abdul-Aziz,1969,1978,C-F,6-9,235,"April 7, 1946",Iowa State University
44
Kareem Abdul-Jabbar,1970,1989,C,7-2,225,"April 16, 1947","University of California, Los Angeles"
55
Mahmoud Abdul-Rauf,1997,2001,G,6-1,162,"March 9, 1969",University of California

mysqlite/nba_players.csv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
,Player,height,weight2,college,born,birth_city,birth_state
1+
,player,height,weight2,college,born,birth_city,birth_state
22
0,Curly Armstrong,6-1,220,University of California,1918,,
33
1,Cliff Barker,188,83,University of Kentucky,1921,Yorktown,Indiana
4-
2,Leo Barnhorst,193,86,University of Notre Dame,1924,,
4+
2,Leo Barnhorst,193,86,University of California,1924,,
55
3,Ed Bartels,196,88,North Carolina State University,1925,,
66
4,Ralph Beard,178,79,University of Kentucky,1927,Hardinsburg,Kentucky
77
5,Gene Berce,180,79,Marquette University,1926,,

0 commit comments

Comments
 (0)