arashi1977さんの助け合いフォーラム投稿一覧
解説に、「(department_id = 3 OR salary > 400000)」の部分が先に評価され
とあるので、department_idが3であるD,Eもしくはsalaryが400000より大きいA,D,Eが回答の選択肢に入ると私は考えます
まず解説の2行目をみてみます。
AND演算子とOR演算子ではAND演算子のほうが先に評価されますが、()括弧がある場合は、括弧内の演算子を優先して評価します。
これからすると、「かっこ→AND→OR」の順に評価されると読めます。その前提で解説の最後の文を再確認しましょう。
設問では「(department_id = 3 OR salary > 400000)」の部分が先に評価され、次にANDですので、「DEPARTMENT_ID列が3かSALARY列が400000より大きく、かつ COMMISSION列が1200000以下である」列(E)、または、「HIREDATE列が2008年4月1日より大きい(新しい)」列(B,C)が検索されます。
カッコだけの評価ならsushitaroさんの言われる通りかもしれませんが、その次にあるANDが抜けているのでずれているんですよね。
順番としては「(department_idとsalaryの条件) かつ commissionの条件」というひとまとまりがあり、次にORで繋がった「hiredateの条件」がくるのですよね。
算数的に考えると
(A + B) x C + D
で「A + B」だけで終わりにして、Cをかけるのを後回しにして C + D をやろうとしてる感覚です。
sqlite3で実験してみましたが、条件をいじるとこんな感じで結果が変わってきます。
sqlite> SELECT *
...> FROM employees
...> WHERE (department_id = 3
...> OR salary > 400000) ;
5|500000|2000000|01-10-01 ←A
3|500000|2000000|01-10-01 ←D
3|400000|1200000|02-12-01 ←E
sqlite> SELECT department_id, salary, commission, hiredate
...> FROM employees
...> WHERE (department_id = 3
...> OR salary > 400000)
...> AND commission <= 1200000;
3|400000|1200000|02-12-01 ←Eだけになっているので、ANDが効いていることがわかる
sqlite> SELECT *
...> FROM employees
...> WHERE (department_id = 3
...> OR salary > 400000)
...> AND commission <= 1200000
...> OR hiredate > '08-04-01';
1|350000|800000|11-04-01 ←B
4|200000|800000|10-04-01 ←C
3|400000|1200000|02-12-01
↑ hiredateの条件でヒットしたB, Cが抽出されている
もう解決されてると思いますが。
これは各ルータ自身の中では一致させる必要があるのでしょうか。
いくつかの設定コマンドでrouter ospf [プロセスID]に入って設定するコマンドがありました。
そういったときに、同じルーターにrouter ospf [プロセスID]に入って設定するコマンドの場合、プロセスIDは統一させないといけないのでしょうか。
OSPF(に限らずEIGRPとかRIPとかでも)のプロセスというのは「ルータ内部での管理範囲」みたいなものです。
例としては変かもしれませんが、Excelファイルを複数開いてたとして、Aというファイルに対する編集はBには関係ないですよね?それと同じことで、「OSPFプロセスID:1に属しているインターフェース、ルーティング情報」は「OSPFプロセスID:2」とは別物になるのです。
それの何が嬉しいの?って話ですが、これはかなりの大規模じゃないとあまりメリットはないかな…CCNPのVRFとかと関連づけると嬉しさがわかってくるかもしれません。
選択肢では(一旦exitしているとはいえ)IPアドレスを設定し直しているように見えます。
し直してますね。そうするとこんな感じのことが起きるのです。
Router#show vrf ←VRF未設定
Router#sh ip int br
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 unassigned YES unset administratively down down
GigabitEthernet0/1 unassigned YES unset administratively down down
GigabitEthernet0/2 unassigned YES unset administratively down down
GigabitEthernet0/3 unassigned YES unset administratively down down
Router#conf t
Router(config)#vrf definition VRF_A
Router(config-vrf)#int g0/0
Router(config-if)#ip addr 192.168.1.1 255.255.255.0
Router(config-if)#do sh ip int br g0/0
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.1.1 YES manual administratively down down ←アドレス割り当てできている
Router(config-if)#vrf forwarding VRF_A
% Interface GigabitEthernet0/0 IPv4 disabled and address(es) removed due to enabling VRF VRF_A ←VRF関連付けをしたのでIPアドレス設定が消される
Router(config-if)#do sh ip int br g0/0
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 unassigned YES manual administratively down down ←消えている
Router(config-if)#
つまり、「一旦exitしているか」は特に影響なく、 vrf forwarding VRF名 というコマンドの 後に IPアドレス設定をしていなかったらだめ、というだけの話なのです。