Если нет Существует проблема и возможная необходимость иметь пункт? - PullRequest
0 голосов
/ 28 апреля 2019

Какие поля, если таковые имеются, никогда не использовались для игры или практики?Это вопрос, на который я пытаюсь ответить.

Я несколько раз пытался заставить это работать.Когда я удаляю части кода «не существует», он возвращает 5 результатов.Это правильно, так как есть пять мест, где Тип = Поле.Проблема только в том, что два из этих 5 полей не используются в практике или игре.

Select Venue.Name, Venue.VenueID 
from Venue 
where Venue.Type = 'Field' 
and not exists (select VenueID from Games) 
and not exists (select VenueID from Practices)

Результаты, основанные на данных, введенных в базу данных, должны возвращать два результата.

Ответы [ 3 ]

1 голос
/ 28 апреля 2019

Вы должны установить условие внутри подзапросов:

Select 
  v.Name, v.VenueID 
from Venue v 
where 
  v.Type = 'Field' 
  and 
  not exists (select VenueID from Games where VenueID = v.VenueID) 
  and 
  not exists (select VenueID from Practices where VenueID = v.VenueID)

Вы хотите идентификаторы, которые не существуют в других 2 таблицах.

1 голос
/ 28 апреля 2019

Я очень новичок в MySQL. Похоже, это должно работать для вас.
Я использую ключевое слово NOT IN вместо NOT EXISTS

Select Venue.Name, Venue.VenueID 
from Venue 
where Venue.Type = 'Field' 
and Venue.VenueID NOT IN (select VenueID from Games) 
and Venue.VenueID NOT IN (select VenueID from Practices)
0 голосов
/ 28 апреля 2019

Я настоятельно не рекомендую вам использовать not in для этой цели. NOT IN не вернет вообще никаких строк, если любое значений, возвращенных подзапросом, равно NULL. Это нелогично.

При использовании коррелированных подзапросов я также настоятельно рекомендую указывать все имена столбцов. Поэтому я бы порекомендовал:

select v.Name, v.VenueID 
from Venue v 
where v.Type = 'Field' and
      not exists (select 1 from Games g where g.VenueID = v.VenueID) and
      not exists (select 1 from Practices p where p.VenueID = v.VenueID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...