2013-04-25 3 views
0

У меня есть следующие OFBiz таблицы, которые я хочу присоединиться с помощью MySQL SQL-запрос:Multiple таблица Регистрация и запросов

  1. USER_LOGIN
  2. PERSON
  3. PARTY_CONTACT_MECH
  4. CONTACT_MECH
  5. TELECOM_NUMBER
  6. POSTAL_ADDRESS
  7. PARTY

Таблица USER_LOGIN, PERSON и PARTY_CONTACT_MECH все содержат внешний ключ "PARTY_ID", который ссылается на первичный ключ "PARTY_ID" в PARTY таблицы.

Таблицы PARTY_CONTACT_MECH, TELECOM_NUMBER и POSTAL_ADDRESS все имеют внешний ключ, ссылающийся "CONTACT_MECH_ID" в таблице CONTACT_MECH первичного ключа "PARTY_ID".

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

Мой вопрос:

  • Как присоединиться все эти таблицы для запроса следующие поля:.

.

PARTY.PARTY_ID, 
USER_LOGIN.USER_LOGIN_ID, 
PERSON.FIRST_NAME, 
CONTACT_MECH.CONTACT_MECH_ID, 
POSTAL_ADDRESS.CITY, 
TELECOM_NUMBER.CONTACT_NUMBER. 
+2

Можете ли вы создать [SQLFiddle] (http://sqlfiddle.com/) с вашей схемой базы данных? –

+0

Или просто прикосновение к форматированию ... – Kermit

+0

Поскольку вы знаете, что у вас есть ключи к JOIN им, что мешает вам писать запрос? –

ответ

0

Вы хотите присоединиться ко всем таблицам с их первичными ключами к внешним ключам, которые вызывают другие таблицы. Внешние ключи по существу являются основными ключами других таблиц. Это значит, что вы используете внешние ключи вместо добавления лишних столбцов в таблицу.

На некоторых ваших таблицах вы хотели бы присоединиться к нескольким значениям. При этом вам нужно только иметь свой JOIN ON table1.var1 = table2.var2 AND table1.var1 = table3.var3 и наоборот.

У вас было много столов, так что я буду делать все, что может:

SELECT 
    PARTY.PARTY_ID 
    , USER_LOGIN.USER_LOGIN_ID 
    , PERSON.FIRST_NAME 
    , CONTACT_MECH.CONTACT_MECH_ID 
    , POSTAL_ADDRESS.CITY 
    , TELECOM_NUMBER.CONTACT_NUMBER 
FROM `PARTY` 
    JOIN `USER_LOGIN` 
    ON PARTY.PARTY_ID = USER_LOGIN.PARTY_ID 
    JOIN `PERSON` 
    ON PARTY.PARTY_ID = PERSON.PARTY_ID 
    JOIN `PARTY_CONTACT_MECH` 
    ON PARTY.PARTY_ID = PARTY_CONTACT_MECH.PARTY_ID AND CONTACT_MECH.PARTY_ID = PARTY_CONTACT_MECH.CONTACT_MECH_ID 
    JOIN `TELECOM_NUMBER` 
    ON CONTACT_MECH.PARTY_ID = TELECOM_NUMBER.CONTACT_MECH_ID 
    JOIN `POSTAL_ADDRESS` 
    ON CONTACT_MECH.PARTY_ID = POSTAL_ADDRESS.CONTACT_MECH_ID 

Как я уже сказал, это довольно трудно идти в ногу со всеми таблицами и столбцами, когда они не визуализируется , но, надеюсь, заявления о соединении помогут вам понять, как это сделать.

+0

, это не сработает, если tom, dick и harry, когда на вечеринку нет способа, чтобы таблица user_login и person отображала, какой из логинов идет с какой человек. ОР должен предоставить дополнительную информацию. – Hogan

Смежные вопросы