PHP でこのクエリを実行し、array
これからそれぞれ 2 つのキーを持つ 2 つのレコードを取得します。array
一意のレコードを抽出する必要があります。このクエリを作成し、配列から一意のレコードを抽出するより専門的な方法はありますか?
PS position1
とpositions2
テーブルは同一です。そのためposition1
、そのうちの 1 つを削除できます。
$get_positions = "SELECT positions1.pos_id1,
positions1.pos_name1,
positions2.pos_id2,
positions2.pos_name2
FROM employees
LEFT JOIN positions1 ON positions1.pos_id1 = employees.position1
LEFT JOIN positions2 ON positions2.pos_id2 = employees.position2
WHERE employees.status IN (1,2)
GROUP BY pos_name2
ORDER BY pos_id2 ASC";
$positions_res = $sql->RunSQL($get_positions, "select");
$positions_res のダンプ
array(2) {
[0]=>
array(8) {
[0]=>
string(1) "4"
["pos_id1"]=>
string(1) "4"
[1]=>
string(27) "Driver"
["pos_name1"]=>
string(27) "Driver"
[2]=>
string(1) "2"
["pos_id2"]=>
string(1) "2"
[3]=>
string(9) "Cook"
["pos_name2"]=>
string(9) "Cook"
}
[1]=>
array(8) {
[0]=>
string(2) "19"
["pos_id1"]=>
string(2) "19"
[1]=>
string(23) "Guard"
["pos_name1"]=>
string(23) "Guard"
[2]=>
string(2) "19"
["pos_id2"]=>
string(2) "19"
[3]=>
string(23) "Guard"
["pos_name2"]=>
string(23) "Guard"
}
}
コードは続く
$pos_list = array();
$i = 0;
for ($n = 0; $n < count($positions_res); $n++) {
if ($positions_res[$n]["pos_name1"] == $positions_res[$n]["pos_name2"]) {
$pos_list[$i]["id"] = $positions_res[$n]["pos_id1"];
$pos_list[$i]["name"] = $positions_res[$n]["pos_name1"];
$i++;
} else {
$pos_list[$i]["id"] = $positions_res[$n]["pos_id1"];
$pos_list[$i]["name"] = $positions_res[$n]["pos_name1"];
$i++;
$pos_list[$i]["id"] = $positions_res[$n]["pos_id2"];
$pos_list[$i]["name"] = $positions_res[$n]["pos_name2"];
$i++;
}
}
var_dump($pos_list);
最終結果のダンプ
array(3) {
[0]=>
array(2) {
["id"]=>
string(1) "4"
["name"]=>
string(27) "Driver"
}
[1]=>
array(2) {
["id"]=>
string(1) "2"
["name"]=>
string(9) "Cook"
}
[2]=>
array(2) {
["id"]=>
string(2) "19"
["name"]=>
string(23) "Guard"
}
}
編集:
従業員 position1 および position2 に割り当てられたすべてのポジションの一意のポジション (pos_id、pos_name) のリストを取得する必要があります (ステータス 1 および 2 の従業員の場合)。
たとえば、従業員
ジョンにはposition1=Driver
,position2=Driver
従業員 サムにはPoition1=Driver
,Position2=Guard
従業員には マイク がいるPosition1=Cook
のでPosition2=Driver
、この場合は選択する必要があります
リスト:
4, Driver
19, Guard
2, Cook