teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

環境追加

2016/11/23 11:08

投稿

aglkjggg
aglkjggg

スコア769

title CHANGED
File without changes
body CHANGED
@@ -33,6 +33,10 @@
33
33
  |1|大塚|
34
34
  |2|山田|
35
35
 
36
+ ### 環境
37
+ MariaDB 15.1
38
+ PHP 5.6.24
39
+
36
40
  ### 質問
37
41
  どのようにすればINで指定した数だけ、重複ありで取得できますでしょうか?
38
42
 

1

PHP追加

2016/11/23 11:08

投稿

aglkjggg
aglkjggg

スコア769

title CHANGED
File without changes
body CHANGED
@@ -34,4 +34,28 @@
34
34
  |2|山田|
35
35
 
36
36
  ### 質問
37
- どのようにすればINで指定した数だけ、重複ありで取得できますでしょうか?
37
+ どのようにすればINで指定した数だけ、重複ありで取得できますでしょうか?
38
+
39
+
40
+ アプリケーションで実装すると、汚くなるので出来る限りSQLだけで完結させたいです。
41
+ ```PHP
42
+ $accountIds = array(1, 1, 2);
43
+ $results = $db->query('select id, name from accounts where id in('. join(',', $accountIds). ')');
44
+
45
+ $accountIdAndNameList = array();
46
+
47
+ foreach($accountIds as $accountId)
48
+ {
49
+ foreach($results as $x)
50
+ {
51
+ if($accountId == $x->id)
52
+ {
53
+ $data = new stdClass();
54
+ $data->id = $x->id;
55
+ $data->name = $x->name;
56
+
57
+ array_push($accountIdAndNameList, $data);
58
+ }
59
+ }
60
+ }
61
+ ```