質問編集履歴

1 codeの修正

SugiuraY

SugiuraY score 249

2017/10/13 18:02  投稿

MYSQLで複数パターンの条件がある場合の、selectの方法
いつもお世話になります。
下記のように、A社及びB社を軸に複数の条件に応じてselectして
該当する値をDBから取得したい(該当があるとは限らない)のですが、
自分の知識では、提示のコードのようにfor文でループさせるしか思いつきません。
もちろん、このようにするとクエリを何度も発行するので非常に重い処理になってしまいます。
何か良い方法はございますでしょうか?
```PHP
$array_1=array(array("A社",100),array("A社",200),array("B社",300));
$array_2=array("aaaa","bbbb");
for ($i=0; $i <$num_count($array_1); $i++) {
for ($i=0; $i <count($array_1); $i++) {
   for ($j=0; $j <count($array_2); $j++) {
     
try {
//一部省略
$sql=$pdo->query("SELECT B FROM testDB where C=:one AND D=:two AND E=:three");
$stmt=$pdo->prepare($sql);
$stmt->bindValue(':one',$array_1[$i][0] , PDO::PARAM_STR);
$stmt->bindValue(':two',$array_1[$i][1] , PDO::PARAM_STR);
$stmt->bindValue(':three',$array_2[$i], PDO::PARAM_STR);
$stmt->execute();
$result=$stmt->fetchall(PDO::FETCH_NUM);
} catch (Exception $e) {
var_dump($e->getMessage());
}
     
 }
}
//期待するresult
//1) A社/100/aaaaの組み合わせ→1000
//2) A社/200/bbbbの組み合わせ→3000
//3) B社/300/bbbbの組み合わせ→4000
>>testDB
[A] [B] [C] [D][ E]
1,1000,A社,100,aaaa
2,2000,A社,200,zzzz
3,3000,A社,200,bbbb
4,4000,B社,300,bbbb
5,5000,B社,300,zzzz
6,4000,B社,100,yyyy
7,3000,C社,500,kkkk
8,2000,C社,300,aaaa
9,1000,C社400,dddd
```
  • MySQL

    9528 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PDO

    508 questions

    PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る