Thursday 15 August 2013

Zend Framework 2 Sql Select with OR and AND -


मैं इस क्वेरी को Zend \ Db \ Sql \ Select का उपयोग करना चाहता हूं:

  SELECT तालिका 1। * तालिका 1 से तालिका 2 में टेबल 2 में शामिल करें टेबल कॉलम 1 पर तालिका 2 तालिका 2.columnB INNER तालिका 3 पर तालिका 1.columnC = table3.columnDHERE (table2.column2 = 2 या table3.column3 = 3) में शामिल हों और table1.column1 = 1 ORDER द्वारा तालिका 1 । ColumnE ASC LIMIT 1   

मुझे अभी तक यह कोड है:

  / * @ var $ db एडेप्टर * / $ db = $ this- & gt; getServiceLocator () - & gt; ( 'डाटाबेस') मिलता है, $ Sql ​​= नया एसक्यूएल ($ db); $ का चयन करें = $ sql-> चुनें (); $ Select- & gt; ( 'table1') से; $ Select- & gt; जुड़ें ('टेबल 2', 'तालिका 1.columnA = table2.columnB', सरणी ()); $ Select- & gt; जुड़ें ('टेबल 3', 'टेबल 1.columnC = table3.columnD', सरणी ()); $ Select- & gt; जहां (सरणी ('table2.column2' = & gt; 2, 'table2.column3' = & gt; 3), PredicateSet :: OP_OR प्रवीण;); $ Select- & gt; जहां (सरणी ('table1.column1' = & gt; 1), PredicateSet :: OP_AND Predicate;); $ चयन- & gt; ऑर्डर ('table1.columnE एएससी'); $ Select- & gt; सीमा (1); $ स्टेटमेंट = $ sql- & gt; तैयार स्टेटमेंटफ़ोसर एसक्यूएल ऑब्जेक्ट ($ का चयन करें); $ परिणामसेट = $ कथन- & gt; निष्पादित करें ();   

लेकिन यह काम नहीं करता है, क्योंकि यह एक (या "के लिए" ("और") के बिना उत्पादन करें:

  SELECT table1। * तालिका 1 से तालिका 2 में तालिका 2 में शामिल करें टेबल 1 पर कॉलम ए तालिका = 2.columnB INNER टेबल 1 पर टेबल 1 पर कॉल करें। कॉलम सी = टेबल 3 कॉलम जहां टेबल 2 कॉल्यूम 2 ​​= 2 या टेबल 3 कॉलम 3 = 3 और टेबल 1 कॉलम 1 = 1 ORDER द्वारा टेबल 1 कॉलम एएससी लिमिट 1   

मैं क्या कर सकता हूँ?

ऊपर से जहां धाराप्रवाह इंटरफ़ेस का उपयोग किया जाता है:

  $ select- & gt; जहां - & gt; नेस्ट - & gt; equalTo ('table2.column2', 2) - & gt; या - & gt; equalTo ('table2 .column3 ', 3) - & gt; अनीस्ट - & gt; और - & gt; बराबर टीओ (' टेबल 1 क्राउल 1 ', 1);    

No comments:

Post a Comment