Я хочу выбрать некоторые значения из трех таблиц, эти таблицы связаны с внешними ключами.Объединить таблицы с нулевыми значениями в FK
Таблица, содержащая внешний ключ, может иметь нулевое значение в этом FK.
Когда я выбираю из трех таблиц, я не получаю строки, где FK имеет значение NULL.
для Exemple это мои таблицы:
ТАБЛИЦА 1 (boninterne):
+---------+-----------+----------+----------+
| num | date | codePers | codeDept |
+---------+-----------+----------+----------+
|1 |12/10/2012 + NULL | 2 |
+---------+-----------+----------+----------+
|2 |12/10/2012 | NULL | NULL |
+---------+-----------+----------+----------+
|3 |12/10/2012 | 1 | 2 |
+---------+-----------+----------+----------+
|4 |12/10/2012 | 4 | NULL |
+---------+-----------+----------+----------+
|5 |12/10/2012 | 12 | 2 |
+---------+-----------+----------+----------+
|6 |12/10/2012 | 3 | NULL |
+---------+-----------+----------+----------+
|7 |12/10/2012 | 1 | 2 |
+---------+-----------+----------+----------+
|8 |12/10/2012 | NULL | 3 |
+---------+-----------+----------+----------+
ТАБЛИЦА 2 (персонал):
+---------+-----------+----------+
|codePers |prenomPers | nomPers |
+---------+-----------+----------+
|1 |AA + ZZ |
+---------+-----------+----------+
|4 |BB | WW |
+---------+-----------+----------+
|3 |CC | XX |
+---------+-----------+----------+
|12 |DD | VV |
+---------+-----------+----------+
ТАБЛИЦА 3 (Departement):
+---------+-----------+
|codeDept |libDept |
+---------+-----------+
|2 |DEPT A1 +
+---------+-----------+
|3 |DEPT B1 |
+---------+-----------+
и это запрос я сделал:
SELECT num, date, CONCAT(prenomPers,' ',nomPers) AS nom, libDept
FROM boninterne, personnel, departement
WHERE boninterne.codePers = personnel.codePers
AND boninterne.codeDept = departement.codeDept
таблица Я хочу, чтобы это:
+---------+-----------+----------+----------+
| num | date | nom | libDept |
+---------+-----------+----------+----------+
|1 |12/10/2012 + NULL | DEPT A1 |
+---------+-----------+----------+----------+
|2 |12/10/2012 | NULL | NULL |
+---------+-----------+----------+----------+
|3 |12/10/2012 | AA ZZ | DEPT A1 |
+---------+-----------+----------+----------+
|4 |12/10/2012 | BB WW | NULL |
+---------+-----------+----------+----------+
|5 |12/10/2012 | DD VV | DEPT A1 |
+---------+-----------+----------+----------+
|6 |12/10/2012 | CC XX | NULL |
+---------+-----------+----------+----------+
|7 |12/10/2012 | AA ZZ | DEPT A1 |
+---------+-----------+----------+----------+
|8 |12/10/2012 | NULL | DEPT B1 |
+---------+-----------+----------+----------+
Но то, что я действительно получаю:
+---------+-----------+----------+----------+
| num | date | nom | libDept |
+---------+-----------+----------+----------+
|3 |12/10/2012 | AA ZZ | DEPT A1 |
+---------+-----------+----------+----------+
|5 |12/10/2012 | DD VV | DEPT A1 |
+---------+-----------+----------+----------+
|7 |12/10/2012 | AA ZZ | DEPT A1 |
+---------+-----------+----------+----------+
Что мне нужно изменить в моем запросе, чтобы получить эту таблицу?
Пожалуйста, используйте ANSI 1992. После этого вам станет понятнее. – Sebas
@Sebas Что вы подразумеваете под ANSI 1992? –
см. Http://www.andrew.cmu.edu/user/shadow/sql/sql1992.txt, ищите выражения запроса 179 (вперед) – Sebas