ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「INNER JOIN」
 

SQLiteで集計をしてみる

/** Geminiが自動生成した概要 **/
SOY ShopのSQLiteデータベースから、姓が「齋藤」の顧客の注文回数を集計する方法を説明しています。`soyshop_order`テーブルと`soyshop_user`テーブルを`user_id`と`id`で結合し、`WHERE`句で名前を絞り込み、`GROUP BY`句でユーザーごとに集計します。注文金額の合計は`SUM(price)`、注文回数は`COUNT(o.id)`で算出できます。結果として、各「齋藤」さんの注文回数と名前が表示されます。

 

SQLiteのALTER文で新たなフィールドを追加してみる

/** Geminiが自動生成した概要 **/
SQLiteのALTER文を使って既存のusersテーブルにcategoryフィールドを追加し、外部キー制約でcategoryテーブルと紐づけました。usersテーブルにはid、name、fname、genderに加え、categoryテーブルのidを示すcategoryフィールドが追加されました。その後、UPDATE文で各ユーザーにcategoryを割り当て、SELECT文とWHERE句で特定のcategoryを持つユーザーを抽出しました。さらに、INNER JOINを用いてusersテーブルとcategoryテーブルを結合し、category名で検索する方法も示しました。最終的に'tanpopo'に属するユーザーの情報が抽出されました。

 

SOY2DAOでSQLを実行して、オブジェクトで返す

/** Geminiが自動生成した概要 **/
SOY2DAOで複雑なSQLを実行しつつ、結果をオブジェクトで取得する方法が紹介されています。顧客テーブルとカスタムフィールドテーブルを結合し、特定のカスタムフィールド値を持つ顧客情報を取得する例が示されています。 `SOYShop_UserDAO` の `executeQuery` でSQLを実行し、結果の配列をループ処理で `getObject` メソッドに渡すことで、各レコードが `SOYShop_User` オブジェクトに変換されます。これにより、カスタムフィールドの値で検索しながら、必要な顧客情報のみをオブジェクトとして扱いやすく取得できます。この手法は、以前紹介されたSOY CMSの検索フォーム追加の記事でも活用されています。

 

SOY CMSで複数のブログ記事をまとめて検索できる機能を作ってみた

/** Geminiが自動生成した概要 **/
SOY CMSで複数のブログ記事をまとめて検索する機能を作成。従来のスクリプトモジュールブロックでは、記事取得後にブログ判別ができず適切なURLを出力できなかったため、cms:moduleを利用。SQLでラベルIDを指定して2つのブログから記事を取得し、取得結果からラベルIDに応じてURLを生成、出力することで複数ブログ検索を実現。モジュールではSQL実行結果を直接利用できるため、Entryオブジェクトへの変換が不要で、柔軟なURL生成が可能となった。

 

検索フォームと検索結果ページを作ってみた3

/** Geminiが自動生成した概要 **/
SOY CMSで検索機能を実装する方法を解説。`/site(サイトID)/script/soycms_search.php`に検索スクリプトを記述。SQLで記事タイトル、本文、追記フィールドを検索し、公開期間内の記事を抽出。結果はEntryオブジェクトに変換後、配列`$soycms_search_result`に格納。テンプレートには`<form method="get" action="/search">`で検索フォームを設置し、クエリパラメータ`q`で検索文字列を受け取るようにする。`$dao->getObject($row)`で検索結果をEntryオブジェクトに変換することで、テンプレートに記述した`<!-- block:id="result" -->`で表示可能になる。


Powered by SOY CMS   ↑トップへ