Соедините три таблицы, в одной из которых нет первичного ключа - PullRequest
0 голосов
/ 27 декабря 2011

У меня есть три таблицы, которые я хотел бы объединить.

Domain table
-domainid - Primary key

DomainRegion table
-domainid - Don't have a Primary Key or Foreign Key
-dombegin
-domend

DynDomrun table
-ddid - Primary Key
-confid1
-confid2

"domain.domainid", "domainregion.domainid" и "dyndomrun.ddid" имеют типы данных одного типа,"изменение символов".

Теперь проблема в том, что в доменах "domain.domainid" и "domainregion.domainid" есть два лишних символа, которые я не могу объединить с "dyndomrun.ddid",

Однако «domainid» относится к «ddid», просто для «domainregion.domainid» не назначен первичный ключ или внешний ключ, и мне нужны некоторые поля из этой таблицы для соединения с другими.

В конце мне нужно иметь одну полную таблицу со списком "dyndomrun.ddid, domainregion.dombegin, domainregion.domend, dyndomrun.confid1, dyndomrun.confid2".

IЯ попытался использовать where ("domain.domainid",8)=left("dyndomrun.ddid",8), это дало мне сообщение об ошибке

ERROR: function left(character varying, integer) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.

Я попытался использовать объединения и другие операторы SQL, и все они, похоже, не работают.

Есть идеи, как решить эту проблему?

Спасибо.

1 Ответ

1 голос
/ 27 декабря 2011

В дополнение к тому, что я ответил здесь , вам также необходимо ознакомиться с синтаксисом идентификаторов в PostgreSQL .

Это:

"domain.domainid"

должно быть

"domain"."domainid"

Или еще лучше, просто:

domain.domainid
...