В базе данных управления арендой у меня есть три таблицы, одна из которых содержит мой товарный запас, одна для заказов этих статей, а другая хранит все проекты:
склад
IdStockType Number Caption Inventory
1 100001 Monitor 10
2 100002 Keyboard 25
3 100003 Notebook 05
4 100004 Desktop 07
бронирования
id IdStockType RentalPrice Factor Project
1 2 15 5 1
2 2 03 2 2
3 4 90 3 2
проектов
id Caption startDate endDate
1 Festival 2019 2019-03-01 2019-03-05
2 Kick-Off ABC 2019-04-15 2019-04-17
3 Big Conference 2019-04-16 2019-04-16
Теперь я хочу написать запрос, дающий мне весь запас с информациейо бронировании и проекте.Если статья не была сдана в аренду, она должна быть указана в любом случае.Если он был арендован, он должен быть указан только с информацией о бронировании и проекте.Так что это может быть там несколько раз:
IdStockType Number Factor Inventory Article RentalPrice Project
1 100001 (NULL) 10 Monitor (NULL) (NULL)
2 100002 5 25 Keyboard 15 Festival 2019
2 100002 2 25 Keyboard 03 Kick-Off ABC
3 100003 (NULL) 05 Notebook (NULL) (NULL)
4 100004 3 07 Desktop 90 Kick-Off ABC
Теперь у меня проблема с моим запросом:
SELECT * FROM (
SELECT
p.IdStockType,
p.Number,
o.Factor,
p.Inventory,
p.Caption AS Article,
q.Caption AS Project
FROM
stock p,
bookings o,
projects q
WHERE
p.IdStockType = o.IdStockType AND
o.Project = q.id
) AS u
RIGHT JOIN (SELECT
r.IdStockType,
r.Number,
NULL,
NULL,
r.Caption AS Article,
NULL
FROM
stock r) d ON d.IdStockType = u.IdStockType;
Полученное количество выводимых строк кажется правильным, но комбинацияинформация странная, потому что согласные столбцы добавляются как новые.
Кто-нибудь может мне помочь с запросом?
Заранее спасибо.
С уважением, Ларс