я должен использовать подзапрос для многих ко многим отношениям? - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть одна таблица для многих и многих отношений, но у меня не было индекса ограничений для этого случая, допустим, у меня есть таблица, подобная этой, люди, клоны, типы, клоны

для людей и типовтриггеры к клонам и клоны триггеры к типам, клоны имеют много типов, а типы имеют много клонов

, когда я запрашиваю вот так

select * from clones m
join people p on p.id = m.person_id
join "CloneHasType" c on c.clone_id = m.id
join clone_types t on t.id = c.clone_type_id

CloneHasType - таблица от многих ко многим

результат показывает все данные этих клонов с типами, но когда в конце этого запроса я добавляю where t.type_name = "nameType", он был возвращен этому запросу (или ничего)

что мне не хватает для этого запроса

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019
where t.type_name = "nameType" 

, так как вы использовали двойную кавычку, чтобы двигатель нашел имя столбца nameType, но вы хотите сравнить строку, поэтому вам нужно использовать одинарную кавычку

 where t.type_name = 'nameType'
0 голосов
/ 29 сентября 2019

Попробуйте: UPPER(t.type_name) = 'NAMETYPE'

Пара замечаний:

  1. В Postgres учитывается регистр символов в строках.

  2. Когда вы проверяете строковые литералы, это следует делать с одинарной кавычкой (') вместо двойных кавычек (")

...