簡體   English   中英

將SQL轉換為關系代數-接下來要做什么?

[英]Converting SQL into Relational Algebra - what to do next?

我正在嘗試將SQL命令轉換為關系代數。 最大的問題是存在一個不在關系代數中的“ NOT IN” SQL語句。

我的查詢做到了:

從受過培訓的員工中選擇員工id,姓氏和training_id(來自培訓),這些人都接受了培訓,但沒有培訓的所有先決條件-因此他們從未完成過先決條件培訓。

如果結果以X結尾,則表示未成功完成。

表格:

employee(employee_id, first_name, last_name)
training(training_id, quartal, year, name)
enrollment(employee_id, training_id, quartal, year, result)
prerequisity(training_id, prerequisity_id)

我的SQL查詢:

select e.employee_id, lastname, training_id from employee as e NATURAL JOIN enrollment NATURAL JOIN training NATURAL JOIN prerequisity WHERE quartal = 'first' and year = '2016'  and training_id NOT IN (select e.training_id from enrollment as e NATURAL JOIN employee as ee where e.employee_id=ee.employee_id and result not like '%X' and result is not NULL)

這可能是正確的SQL,所以現在我將其轉換為關系代數:

PROJECT[employee_id,lastname, training_id](SELECT[quartal='first',year='2016'](employee@enrollment@training@prerequisity)) # here is the problem

如何在RA中模擬“ NOT IN”命令?

我建議您使用Set Difference (−)

集差運算的結果是元組,它們以一種關系存在而沒有第二種關系。

PROJECT[employee_id,lastname, training_id](SELECT[quartal='first',year='2016']
    (employee@enrollment@training@prerequisity))  - (PROJECT training_id ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM