C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 複数SQL文をzendでどう書きますか?


(過去ログ 101 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■60683 / inTopicNo.1)  複数SQL文をzendでどう書きますか?
  
□投稿者/ php (1回)-(2011/07/14(Thu) 21:10:24)

分類:[その他の言語] 

select A.id,A.title,A.body,A.start_day,A.end_day,A.publish_flag,
(case when (B.id is null or C.id is null)
then A.iscolor = 1
else A.iscolor = 0
end) as iscolor
from
( SELECT *, '' as iscolor FROM t_news ) as A
left join
( SELECT id FROM t_news where CASE WHEN end_day IS NOT NULL
THEN start_day <= current_date
AND
end_day >= current_date
ELSE start_day <=current_date
END
) as B
ON A.id = B.id
left join
( SELECT id FROM t_news where publish_flag = 1 ) as C
ON A.id = C.id
order by A.id desc
limit 0,15

---上記のSQL文をzend 書き式で書きたいですがきけないです。
例:
$select = $this->select()
->from($this->_name)
->where($strWhere)
->order($order)
->limit($count, $offset);
    $rowset = $this->fetchAll($select);

    return array('data' => $rowset->toArray());
引用返信 編集キー/
■60684 / inTopicNo.2)  Re[1]: 複数SQL文をzendでどう書きますか?
□投稿者/ やじゅ (1927回)-(2011/07/14(Thu) 21:23:38)
やじゅ さんの Web サイト
No60683 (php さん) に返信
> ---上記のSQL文をzend 書き式で書きたいですがきけないです。

そのSQLをVIEWにしてしまうとか。

引用返信 編集キー/
■60686 / inTopicNo.3)  Re[2]: 複数SQL文をzendでどう書きますか?
□投稿者/ 逆運の覇者 (34回)-(2011/07/14(Thu) 22:22:56)
複雑なSQLは使わないべきだと思いますよ。

それはそれとして、そのSQLを
ストアドプロシージャ(ユーザー定義関数)として、データベースに持たせてしまう。
そのストアドプロシージャをPHP(Zend)から呼び出す。
というのはどうでしょう。

Zendでストアドプロシージャはこのように呼び出すようです。
$sp = $dbAdapter->prepare('CALL updateResultsByEvent(?, ?, ?, ?)');
引用返信 編集キー/
■60687 / inTopicNo.4)  Re[3]: 複数SQL文をzendでどう書きますか?
□投稿者/ 逆運の覇者 (35回)-(2011/07/14(Thu) 22:28:59)
もしかすると、
「その方法だとデータベースアクセスを抽象化するZendのメリットがなくなるじゃないか」
と思われるかもしれません。

だとしたら、SQLからビジネスロジック(条件処理)を取り除くべきでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -