2012-01-30 5 views
0

Я пытаюсь создать двухуровневый JOIN в SQLike и не могу пройти стадию JOIN на одном уровне.Синтаксис множественного соединения в SQLike

В JSONs я использую в качестве исходных таблиц являются:

var placesJSON=[{"id":"173","name":"England","type":"SUBCTRY"},{"id":"580","name":"Great Britain","type":"CTRY"},{"id":"821","name":"Southern England","type":"REG"},{"id":"822","name":"Northern England","type":"REG"},{"id":"831","name":"Southwest England","type":"REG"},{"id":"832","name":"Southeast England","type":"REG"},{"id":"833","name":"Western Midlands","type":"REG"},{"id":"834","name":"Eastern Midlands","type":"REG"},{"id":"889","name":"Eastern England","type":"REG"},{"id":"937","name":"Central Southern England","type":"REG"}]; 
var relationsJSON=[{"son":"173","father":"580"},{"son":"821","father":"173"},{"son":"822","father":"173"},{"son":"831","father":"173"},{"son":"832","father":"173"},{"son":"833","father":"173"},{"son":"834","father":"173"},{"son":"889","father":"173"},{"son":"937","father":"173"}]; 

для MySQL эквивалент того, что я пытаюсь сделать, это:

SELECT DISTINCT p.id, p.name, p.type, r.son, r.father, f.name 
FROM places p 
JOIN places_relations r ON p.id=r.son 
JOIN places f ON f.id=r.father 

Первый уровень РЕГИСТРИРУЙТЕСЬ работы большие:

SQLike.q({ 
    SelectDistinct: ['p_id', 'p_name', 'r_son' ,'p_type', 'r_father'], 
    From: {p:placesJSON}, 
    Join: {r:relationsJSON}, 
    On: function(){return this.p.id==this.r.son} 
}) 

Но когда я пытаюсь добавить второй JOIN, я не получаю никаких результатов. Синтаксис я использую это:

SQLike.q({ 
    SelectDistinct: ['p_id', 'p_name', 'r_son' ,'p_type', 'r_father', 'f_name'], 
    From: {p:placesJSON}, 
    Join: {r:relationsJSON}, 
    On: function(){return this.p.id==this.r.son}, 
    Join: {f:placesJSON}, 
    On: function(){return this.f.id==this.r.father} 

})

Любые идеи о том, как получить это право?

ответ

0

Свойства On и Join будут переопределены. Там нет хорошей документации и код не читается, но вы можете попробовать implicit join или это:

Join: {r:relationsJSON, f:placesJSON}, 
On: function(){return this.p.id==this.r.son && this.f.id==this.r.father; } 
+0

Спасибо, meze! (-: – einav

Смежные вопросы