0

テーブルの説明は次のとおりです
。CREATETABLEmy_table(idint、namevarchar(9)、valuevarchar(13));

INSERT INTO my_table(、、id) VALUES(0 namevalue'timezone'、'Europe / London')、(0、'language'、'en')、(0、'country'、 '45')、(0、 '何か'、' x')、(1、'タイムゾーン'、'ヨーロッパ/パリ')、(1、'言語'、' fr')、(1、'国'、' 46');

        id  name       value

        0   timezone    Europe/London
        0   language    en
        0   country     45
        0   something   x
        1   timezone    Europe/Paris
        1   language    fr
        1   country     46

私の結果は見えるはずです

  ID     TIMEZONE       LANGUAGE      COUNTRY SOMETHING
  0      Europe/London  en            45      x
  1      Europe/Paris   fr            46      (null)

Zend_Db_TableまたはZend_Db_Selectを使用して、Zend Frameworkでこのクエリを実行するにはどうすればよいですか?どうもありがとう!

[追加されたコメントからのクエリを編集]

SELECT CONCAT( 'SELECT table.id', GROUP_CONCAT(CONCAT(' , t_', REPLACE(name, '', ''), '`.value AS `', REPLACE(name, '`', ''), '' ) SEPARATOR ''), ' 
FROM table` ', 
GROUP_CONCAT(CONCAT(' LEFT JOIN table AS t_', REPLACE(name, '', ''), '` ON `table`.id = `t_', REPLACE(name, '`', ''), '.id AND t_', REPLACE(name, '', '``'), '.name = ', 
QUOTE(name) ) SEPARATOR ''), ' 
GROUP BY table.id' ) 
INTO @qry FROM (SELECT DISTINCT name FROM table) t;

 PREPARE stmt FROM @qry;
 EXECUTE stmt; 
4

1 に答える 1

0

DbTableモデルのZend_Db_Adapterを使用するソリューションは次のとおりです。

/*accepts a string of SQL*/
public function getQuery($sql) {
    $query = $this->getAdapter->quoteInto($sql);
    $result = $this->getAdapter()->fetchAll($query);
    /*if you want the result as an array instead of an object: $result->toArray()*/
    return $result;
}

クエリを解析して流暢なインターフェイスを示すためのSQLチョップがありません。幸運を。

于 2012-12-26T13:30:35.733 に答える