から私は同じpreference_idに基づいて第1のグループメンバーにしたいこのグルーピングユーザはデータベース
+--------+----------+--------------+------------------+
| id | user_id | preference_id|Sub_Preference_Id |
+--------+----------+--------------+------------------+
| 15145 | 55 | 2 | 7 |
| 15146 | 56 | 2 | 7 |
| 15148 | 58 | 3 | 10 |
| 15150 | 52 | 3 | 12 |
| 15314 | 59 | 1 | 1 |
| 15315 | 60 | 3 | 12 |
| 15316 | 57 | 3 | 12 |
+--------+----------+--------------+------------------+
ようなテーブルは、その特定同じpreference_idに再びiはグループ同じSub_Preference_Idしたい持っています。
今+--------+----------+--------------+------------------+
| id | user_id | preference_id|Sub_Preference_Id |
+--------+----------+--------------+------------------+
| 15145 | 55 | 2 | 7 |
| 15146 | 56 | 2 | 7 |
+--------+----------+--------------+------------------+
+--------+----------+--------------+------------------+
| id | user_id | preference_id|Sub_Preference_Id |
+--------+----------+--------------+------------------+
| 15150 | 52 | 3 | 12 |
| 15315 | 60 | 3 | 12 |
| 15316 | 57 | 3 | 12 |
+--------+----------+--------------+------------------+
+--------+----------+--------------+------------------+
| id | user_id | preference_id|Sub_Preference_Id |
+--------+----------+--------------+------------------+
| 15314 | 59 | 1 | 1 |
+--------+----------+--------------+------------------+
+--------+----------+--------------+------------------+
| id | user_id | preference_id|Sub_Preference_Id |
+--------+----------+--------------+------------------+
| 15148 | 58 | 3 | 10 |
+--------+----------+--------------+------------------+
私はこのように行われています:
$preference_idss = array('1','2','3','4','5','6');
foreach ($preference_idss as $preference_ids) {
$query ="SELECT * FROM gic_user_preference where preference_id='$preference_ids'";
$result_preferencea = mysqli_query($createCon->connect(), $query);
while ($result_preference2 = mysqli_fetch_assoc($result_preferencea)) {
$groupedData[$result_preference2['sub_preference_id']][] = $result_preference2;
}
}
が、私は失敗した
手段が、私はこのようなグループがしたいですか?
どのように選択クエリを使用してデータを選択するか、php foreach、arrayなどを使用しないでください。
$in = join(',', array_fill(0, count($preference_ids), '?'));
$select = <<<SQL
SELECT *
FROM gic_user_preference
WHERE preference_id IN ($in)
GROUP BY preference_id, Sub_Preference_Id;
SQL;
$statement = $pdo->prepare($select);
$statement->execute($preference_ids);
をあなたが等しくない 'を' を使用し、単一のフィールドに複数の値を検索したい場合はMySQLiを
$in = join(',', array_fill(0, count($preference_ids), '?'));
$select = <<<SQL
SELECT *
FROM gic_user_preference
WHERE preference_id IN ($in)
GROUP BY preference_id, Sub_Preference_Id;
SQL;
$statement = $mysqli->prepare($select);
$statement->bind_param(str_repeat('i', count($preference_ids)), ...$preference_ids);
$statement->execute();
$result = $statement->get_result();
を使用した:PDOを使用して
使用・グループ、Sub_Preference_Id? – madalinivascu
1つのクエリで複数レベルの配列をMySqlに受け取ることはできません。結果を注文することしかできません。私はあなたのアプローチが正しいと思う。 – splash58
私たちはそれを「グループ化」ではなく「順序付け」と呼びます。これはSQLで特別な意味を持ちます。 – Strawberry