Как соединить два выбора? - PullRequest
0 голосов
/ 01 ноября 2019

У меня проблема с выбором из двух таблиц.

Я использую фильтр с даты, когда я использовал NOT IN, но не работал, потому что данные не приводятся в таблице отправлений. Я хочу показывать наряды, которые свободны на эти даты, и наряды, которые не включены в аренду стола. Структура базы на картинке enter image description here

SELECT o.Id, o.Name, c.Name, o.Description,o.Price, r.Date1, r.Date2, r.Return 
FROM Outfit o INNER JOIN
     Category c
     ON o.Category = c.Id INNER JOIN
     Rent r
     ON o.Id = r.OutFit 
WHERE (myfiltrdate NOT BETWEEN r.Date1 AND r.Date2) OR
      r.Return IS NOT NULL

Теперь мой результат - это только запись / экипировка, которые являются таблицей аренды, но я хочу этот результат и экипировка, которых нет в таблице аренды.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Я думаю, вы хотите LEFT JOIN с и фильтрации. Как то так:

SELECT o.Id, o.Name, c.Name, o.Description, o.Price,
       r.Date1, r.Date2, r.Return 
FROM Outfit o LEFT JOIN
     Category c
     ON o.Category = c.Id LEFT JOIN
     Rent r
     ON o.Id = r.OutFit AND
        (myfiltrdate BETWEEN r.Date1 AND r.Date2)
WHERE r.Return IS NULL;
0 голосов
/ 01 ноября 2019

Вы можете попробовать присоединиться слева -

SELECT o.Id, o.Name, c.Name, o.Description,o.Price, r.Date1, r.Date2, r.Return 
FROM Outfit o LEFT JOIN
     Category c
     ON o.Category = c.Id INNER JOIN
     Rent r
     ON o.Id = r.OutFit 
WHERE (myfiltrdate NOT BETWEEN r.Date1 AND r.Date2) OR
      r.Return IS NULL
0 голосов
/ 01 ноября 2019

Измените свой запрос на левое соединение и отфильтруйте даты следующим образом:

    SELECT o.Id, o.Name, c.Name, o.Description,o.Price, r.Date1, r.Date2, r.Return 
    FROM Outfit o 
    INNER JOIN Category c ON o.Category = c.Id 
LEFT JOIN Rent r ON o.Id = r.OutFit
    WHERE  (myfiltrdate < r.Date1 AND myfiltrdate > r.Date2) OR
  r.Return IS NOT NULL

У меня нет ясности, если Возвращение - это дата, когда наряд возвращается, или это логическое значение, но я подозреваю, чтоусловие должно быть

And r.Return IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...