@@ -55,7 +55,7 @@ data Constr = NOTNULL
5555
5656
5757data SQL = SELECT SelVar SQL Clause
58− | TBL String
58+ | TBL (List String)
5959 | INSERT SQL (List Value)
6060 | INSERTC SQL (List Value) (List Value)
6161 | UPDATE SQL condClause
@@ -142,6 +142,7 @@ listValType xs ((val, types, constr) :: vs) = let (str , newxs) = valString xs v
142142 let (finalstr, finalxs) = listValType newxs'' vs in
143143 ((unwords(intersperse " " (words(str) ++ words(str') ++ words(str'') ++ words(finalstr)))) , finalxs)
144144
145+
145146-----------------------------------------------------------
146147-- | Evaluates a condition after WHERE clause
147148-----------------------------------------------------------
@@ -204,37 +205,41 @@ condClauseStr xs (WHERE setcl1 setcl2) = let (condstr, newxs) = condClauseStr xs
204205 let (condstr', newxs') = clauseString newxs setcl2 in
205206 ( condstr ++ " WHERE " ++ condstr', newxs')
206207
207−--TODO SELECT data from tbl1 where num > (SELECT num from tbl1 where num = 24)
208−-- evalSQL [] ((SELECT ALL) (TBL "tbl") (MkSQL ((SELECT ALL) (TBL "tbl") (MkCond (VCol ") ) ) )
208+-- SELECT data from tbl1 where num > (SELECT num from tbl1 where num = 24)
209+-- evalSQL [] ((SELECT ALL) (TBL "tbl") (MkSQL ((SELECT ALL) (TBL "tbl") (MkCond (VCol ") ) ) )
210+-- NTBF
209211--clauseString xs (MkSQL sql) = (evalSQL xs sql)
210−
211212
212−evalSQL xs (TBL tbl) = (tbl, xs)
213+-- Separate list of tables
214+evalSQL xs (TBL tbl) = ((unwords (intersperse "," ( tbl))), xs)
213215evalSQL xs (SELECT vars sql' c) = let (sqlstring, newxs) = evalSQL xs sql' in
214216 let (csstring, newxs') = clauseString newxs c in
215217 case c of
216218 Empty => case vars of
217219 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
218220 ++ (putBrackets sqlstring) ++ csstring, newxs')
219− else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring ++ csstring, newxs')
221+
222+ else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring
223+ ++ csstring, newxs')
220224
221− (Cols selvar) => if complexType sql' then ("SELECT " ++ unwords ( intersperse "" ( selvar ++
222− (words ( " FROM " ++ (putBrackets sqlstring) )))) ++ csstring, newxs')
223− else ("SELECT " ++ unwords ( intersperse "" ( selvar ++
224− (words ( "FROM " ++ sqlstring )))) ++ csstring, newxs')
225+ (Cols selvar) => if complexType sql' then ("SELECT " ++ (unwords selvar) ++
226+ " FROM " ++ (putBrackets sqlstring) ++ csstring, newxs')
227+
228+ else ("SELECT " ++ (unwords selvar )++ " FROM " ++ sqlstring
229+ ++ csstring, newxs')
225230
226231 _ => case vars of
227232 (ALL ) => if complexType sql' then ("SELECT " ++ "*" ++ " FROM "
228− ++ (putBrackets sqlstring) ++ " WHERE " ++ csstring , newxs')
229− else ("SELECT " ++ "*" ++ " FROM "
230− ++ sqlstring ++ " WHERE " ++ csstring , newxs')
233+ ++ " WHERE " ++ csstring , newxs')
234+ else ("SELECT " ++ "*" ++ " FROM " ++ sqlstring
235+ ++ " WHERE " ++ csstring , newxs')
231236
232− (Cols selvar) => if complexType sql' then ("SELECT " ++ unwords ( intersperse "" ( selvar ++
233− (words ( " FROM " ++ (putBrackets sqlstring) ))))
234− ++ " WHERE " ++ csstring , newxs')
237+ (Cols selvar) => if complexType sql' then ("SELECT " ++ (unwords selvar) ++ " FROM " ++
238+ (putBrackets sqlstring) ++ " WHERE "
239+ ++ csstring , newxs')
235240
236− else ("SELECT " ++ unwords ( intersperse "" ( selvar ++
237− (words ( "FROM " ++ sqlstring )))) ++ " WHERE " ++ csstring , newxs')
241+ else ("SELECT " ++ (unwords selvar) ++ " FROM " ++ sqlstring
242+ ++ " WHERE " ++ csstring , newxs')
238243
239244
240245evalSQL xs (INSERT sql vals) = let (tblname, newvals) = evalSQL xs sql in