質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

350閲覧

QueryBuilderのCOUNT処理について

nock

総合スコア13

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/04/11 08:26

編集2019/04/11 08:28

いつもお世話になっております。

QueryBuilderで少し複雑な条件で
count処理を実装しております。

まる1日かかり、行き詰まったため、
こちらでご質問させていただきます。

初歩的な質問となるかもしれませんが
何卒、ご容赦頂けますと幸いです。

以下の2つのテーブルをinnerJoinし
countを下記のように実現したいです。

テーブルA
id
顧客id

テーブルB
id(テーブルAのid)
商品id

idは紐付いています。
顧客が同じ商品を何回購入しているのかを
countで求めることは可能でしょうか?

以上、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

頂きましたSQL文を元に下記のような
QueryBuilderを作成し、
想定通りの動きを実装致しました。

$qb = $this->createQueryBuilder('tb'); $result = $qb ->select('COUNT(tb.商品情報)') ->innerJoin('tb.テーブルA', 'ta') ->Where('tb.商品情報 = :商品情報') ->andWhere('ta.顧客情報 = :顧客情報') // 購入処理中は該当処理を行わない ->andWhere($qb->expr()->notin('ta.ステータス情報',[7,8])) ->setParameter('商品情報', $商品情報) ->setParameter('顧客情報', $顧客情報) ->getQuery() ->getResult(); return $result;

この度は誠にありがとうございました!

投稿2019/04/15 02:24

nock

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

複雑と言われているので、外しているかもしれませんが。

SQL

1select ta.顧客ID, tb.商品id, count(*) 2from テーブルA as ta inner join テーブルB as ta 3 on ta.id=tb.id 4group by ta.顧客ID, tb.商品id

投稿2019/04/11 10:30

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nock

2019/04/12 01:10

ご回答いただきまして、 誠にありがとうございます。 昨日いろいろ組んでみて、 お恥ずかしながら、 頭の中がこんがらがってしまいまして・・・。 SQL文を組むことすらも あれれ?状態になってしまいました・・・(笑) ご提示頂きましたSQL文を 早速QueryBuilderにあてがってみます。 完了次第またご報告させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問