A Person
可以有許多Degree
記錄。hasMany關係的潛在複雜查詢;這可以做到嗎?
人
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| firstName | varchar(60) | NO | | NULL | |
| lastName | varchar(100) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
度(編輯:我已經隱藏了簡單許多額外的字段)
+----------+-------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| personID | int(11) | NO | MUL | NULL | |
| type | enum('PhD','MSE','MEng','MA') | NO | | NULL | |
+----------+-------------------------------+------+-----+---------+----------------+
在網頁中,我想展示的人,他們的名單學位信息(還有其他信息的學位除了他們的類型,我只是沒有包括它,爲簡單起見)。我相信這必須在N + 1個查詢中完成。首先,查詢,選擇有度所有的人:
SELECT DISTINCT person.id
FROM person
JOIN degree ON degree.personID = person.id
然後通過每個迭代的結果時,查詢直接學位:
SELECT * FROM degree WHERE personID = :personID
然而,我的生活不是那麼簡單的。我有兩個附加要求:
- 允許根據程度過濾頁面。例如:「只顯示'MA'度的人」,「只顯示'MSE'度的人」。
- 如果該人不具有「博士」學位,則只顯示'MA'度。
我正在努力如何將這些要求納入查詢。對於第一個要求,主查詢需要事先知道用戶擁有什麼程度。我需要一個子查詢嗎?
規則還需要參與主查詢(以及加載度數的第二個查詢)。
只是一個小評論,這是列,而不是場... – jarlh
我只是複製從MySQL的'describe'命令 – Brian
哈哈輸出,對不起......不知道他們有自己的條件... – jarlh