Skip to content

Instantly share code, notes, and snippets.

@dmitrig01
Created August 16, 2011 16:52
Show Gist options
  • Save dmitrig01/1149535 to your computer and use it in GitHub Desktop.
Save dmitrig01/1149535 to your computer and use it in GitHub Desktop.
var tests = [
"countries",
"'10m_admin_0_countries'",
'(SELECT countries.* FROM countries)',
'(SELECT countries.*, bus2.factor FROM countries LEFT JOIN business.bus2 ON countries.adm0_a3 = bus2.iso)',
'(SELECT countries.*, bus2.factor FROM countries LEFT JOIN business.bus2 ON countries.adm0_a3 = bus2.iso WHERE foo = bar)',
'(SELECT countries.*, bus2.factor FROM countries LEFT JOIN business.bus2 ON countries.adm0_a3 = bus2.iso LEFT JOIN business.bus2 ON countries.adm0_a3 = bus2.iso WHERE foo = bar)',
'(SELECT countries.*, bus2.factor FROM countries LEFT JOIN business.bus2 ON countries.adm0_a3 = bus2.iso WHERE foo = bar LIMIT 3)'];
function m(t) {
var parts = t.replace(/^\(|\)$/g, '')
.split(/WHERE/i).shift()
.split(/FROM/i).pop()
.split(/(LEFT|INNER|RIGHT)\s+JOIN/i),
tables = [];
for (var i = 0; i < parts.length; i++) {
if (i % 2 == 0) {
tables.push(parts[i].split(/ON/i).shift().split('.').pop().replace(/^\s*|\s*$/g, ''));
}
}
console.log(tables);
}
for (i = 0; i < tests.length; i++) {
m(tests[i]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment