2016-11-11 3 views
0

Я был повсюду в Интернете, ища ответы на это. Я надеюсь, что кто-то здесь может помочь мне в этом.Присоединяйтесь к нескольким столам в одном соединении в propel

Я пытаюсь составить запрос ниже, используя propel. Возможно?

 

SELECT * FROM table1 
LEFT JOIN (table2, table3) ON (
    table1.id = table2.foreign_id 
    AND table2.foreign_id = table3.id 
); 

+0

Опубликуйте образцы данных и ожидаемые результаты для данных образца. Я уверен, что SQL можно понять. Я все еще беспокоюсь о том, что вы не должны смешивать букву ',' join с ANSI-92 Join notation, используя ключевое слово Join; но, возможно, продвижение делает что-то другое. – xQbert

+0

Я отмечу, что на вашем стенде на нотации соединения, потому что они дают разные результаты. Я на самом деле пытался просто использовать два отдельных объединения вместо одного, но результаты были разными, так как Im использовал левое соединение. Он будет работать для внутреннего соединения. Но, к сожалению, это не то, что я ищу. В любом случае, спасибо за ответ, я решил просто использовать пользовательский sql и взломать s *** из пропеллера. – uji

ответ

0

Вы пробовали что-то вроде этого?

Table1Query::create() 
    ->useTable2Query(null, Criteria::LEFT_JOIN) 
    ->useTable3Query(null, Criteria::LEFT_JOIN) 
    ->endUse() 
    ->endUse() 
    ->find(); 
+0

Да, попробовал. Производит разный sql-запрос. Я только что прочитал, что это невозможно. Единственным правилом является пользовательский sql. – uji